home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio 2000 / Ham Radio 2000.iso / ham2000 / antenna / nec4pc / nec-2.for < prev    next >
Text File  |  1994-10-17  |  303KB  |  9,070 lines

  1. C     PROGRAM NEC(INPUT,TAPE5=INPUT,OUTPUT,TAPE11,TAPE12,TAPE13,TAPE14, 
  2. C    1TAPE15,TAPE16,TAPE20,TAPE21)                                      
  3. C                                                                       
  4. C     NUMERICAL ELECTROMAGNETICS CODE (NEC2)  DEVELOPED AT LAWRENCE     
  5. C     LIVERMORE LAB., LIVERMORE, CA.  (CONTACT G. BURKE AT 415-422-8414 
  6. C     FOR PROBLEMS WITH THE NEC CODE.  FOR PROBLEMS WITH THE VAX IMPLEM-
  7. C     ENTATION, CONTACT J. BREAKALL AT 415-422-8196 OR E. DOMNING AT 415
  8. C     422-5936)
  9. C     FILE CREATED 4/11/80.                                             
  10. C                                                                       
  11. C                ***********NOTICE**********                            
  12. C     THIS COMPUTER CODE MATERIAL WAS PREPARED AS AN ACCOUNT OF WORK    
  13. C     SPONSORED BY THE UNITED STATES GOVERNMENT.  NEITHER THE UNITED    
  14. C     STATES NOR THE UNITED STATES DEPARTMENT OF ENERGY, NOR ANY OF     
  15. C     THEIR EMPLOYEES, NOR ANY OF THEIR CONTRACTORS, SUBCONTRACTORS, OR 
  16. C     THEIR EMPLOYEES, MAKES ANY WARRANTY, EXPRESS OR IMPLIED, OR       
  17. C     ASSUMES ANY LEGAL LIABILITY OR RESPONSIBILITY FOR THE ACCURACY,   
  18. C     COMPLETENESS OR USEFULNESS OF ANY INFORMATION, APPARATUS, PRODUCT 
  19. C     OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT        
  20. C     INFRINGE PRIVATELY-OWNED RIGHTS.                                  
  21. C                                                                       
  22. C***
  23. C ***
  24. C     DOUBLE PRECISION 6/4/85
  25. C
  26. C ***
  27.       IMPLICIT REAL (A-H,O-Z)
  28.       CHARACTER   AIN*2, ATST*2, INFILE*80, OTFILE*80
  29. C***
  30.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  31. C     INTEGER  AIN,ATST,PNET,HPOL                                       
  32.       REALHPOL,PNET 
  33.       COMPLEX  CM, FJ, VSANT, ETH, EPH, ZRATI, CUR, CURI, ZARRAY, 
  34.      &ZRATI2
  35.       COMPLEX  EX, EY, EZ, ZPED, VQD, VQDS, T1, Y11A, Y12A, EPSC, U,
  36.      & U2, XX1, XX2
  37.       COMPLEX  AR1, AR2, AR3, EPSCF, FRATI
  38.       COMMON  /DATA/ LD, N1, N2, N, NP, M1, M2, M, MP, X( NM), Y( NM), 
  39.      &Z( NM), SI( NM), BI( NM), ALP( NM), BET( NM), ICON1( N2M), ICON2(
  40.      & N2M), ITAG( N2M), ICONX( NM), WLAM, IPSYM
  41.       COMMON  /CMB/ CM(90000)
  42.       COMMON  /MATPAR/ ICASE, NBLOKS, NPBLK, NLAST, NBLSYM, NPSYM, 
  43.      &NLSYM, IMAT, ICASX, NBBX, NPBX, NLBX, NBBL, NPBL, NLBL
  44.       COMMON  /SAVE/ IP( N2M), KCOM, COM(19,5), EPSR, SIG, SCRWLT, 
  45.      &SCRWRT, FMHZ
  46.       COMMON  /CRNT/ AIR( NM), AII( NM), BIR( NM), BII( NM), CIR( NM), 
  47.      &CII( NM), CUR( N3M)
  48.       COMMON  /GND/ ZRATI, ZRATI2, FRATI, CL, CH, SCRWL, SCRWR, NRADL, 
  49.      &KSYMP, IFAR, IPERF, T1, T2
  50.       COMMON  /ZLOAD/ ZARRAY( NM), NLOAD, NLODF
  51.       COMMON  /YPARM/ NCOUP, ICOUP, NCTAG(5), NCSEG(5), Y11A(5), Y12A(
  52.      &20)
  53.       COMMON  /SEGJ/ AX(30), BX(30), CX(30), JCO(30), JSNO, ISCON(50), 
  54.      &NSCON, IPCON(10), NPCON
  55.       COMMON  /VSORC/ VQD(30), VSANT(30), VQDS(30), IVQD(30), ISANT(30)
  56.      &, IQDS(30), NVQD, NSANT, NQDS
  57.       COMMON  /NETCX/ ZPED, PIN, PNLS, NEQ, NPEQ, NEQ2, NONET, NTSOL, 
  58.      &NPRINT, MASYM, ISEG1(150), ISEG2(150), X11R(150), X11I(150), 
  59.      &X12R(150), X12I(150), X22R(150), X22I(150), NTYP(150)
  60.       COMMON  /FPAT/ NTH, NPH, IPD, IAVP, INOR, IAX, THETS, PHIS, DTH, 
  61.      &DPH, RFLD, GNOR, CLT, CHT, EPSR2, SIG2, IXTYP, XPR6, PINR, PNLR, 
  62.      &PLOSS, NEAR, NFEH, NRX, NRY, NRZ, XNR, YNR, ZNR, DXNR, DYNR, DZNR
  63.      &
  64.       COMMON  /GGRID/ AR1(11,10,4), AR2(17,5,4), AR3(9,8,4), EPSCF, DXA
  65.      &(3), DYA(3), XSA(3), YSA(3), NXA(3), NYA(3)
  66. C***
  67.       COMMON  /GWAV/ U, U2, XX1, XX2, R1, R2, ZMH, ZPH
  68. C***
  69.       COMMON  /PLOT/ IPLP1, IPLP2, IPLP3, IPLP4
  70.       DIMENSION  CAB(1), SAB(1), X2(1), Y2(1), Z2(1)
  71.       DIMENSION  LDTYP(200), LDTAG(200), LDTAGF(200), LDTAGT(200), 
  72.      & ZLR(200), ZLI(200), ZLC(200)
  73.       DIMENSION  ATST(22), PNET(6), HPOL(3), IX( N2M)
  74.       DIMENSION  FNORM(200)
  75. C***
  76.       DIMENSION  T1X(1), T1Y(1), T1Z(1), T2X(1), T2Y(1), T2Z(1)
  77.       DIMENSION  XTEMP( NM), YTEMP( NM), ZTEMP( NM), SITEMP( NM), 
  78.      &BITEMP( NM)
  79.       EQUIVALENCE(CAB,ALP),(SAB,BET),(X2,SI),(Y2,ALP),(Z2,BET)
  80.       EQUIVALENCE(T1X,SI),(T1Y,ALP),(T1Z,BET),(T2X,ICON1),(T2Y,ICON2),(
  81.      &T2Z,ITAG)
  82.       DATA   ATST/'CE','FR','LD','GN','EX','NT','XQ','NE','GD','RP',
  83.      &'CM','NX','EN','TL','PT','KH','NH','PQ','EK','WG','CP','PL'/
  84.       DATA   HPOL/6HLINEAR,5HRIGHT,4HLEFT/
  85.       DATA   PNET/6H      ,2H  ,6HSTRAIG,2HHT,6HCROSSE,1HD/
  86.       DATA   TA/1.745329252D-02/, CVEL/299.8/
  87. C***
  88.       DATA   LOADMX, NSMAX, NETMX/200,150,150/, NORMF/200/
  89.   706 CONTINUE
  90.       PRINT700 
  91.   700 FORMAT('$ENTER DATA INPUT FILENAME [HIT RETURN FOR TERMINAL',
  92.      &' INPUT] : ',/,'$     >')
  93.   701 FORMAT(A)
  94.       READ( *,701,ERR=702)  INFILE
  95.       CALL STR0PC( INFILE, INFILE)
  96. C      OPEN (UNIT=5,FILE=INFILE,STATUS='OLD',READONLY,ERR=702)
  97.       IF( INFILE.NE.' ') THEN
  98.       OPEN ( UNIT=5,FILE=INFILE,STATUS='OLD',ERR=702)
  99.       ENDIF
  100.   707 CONTINUE
  101.       PRINT703 
  102.   703 FORMAT('$ENTER DATA OUTPUT FILENAME [HIT RETURN FOR TERMINAL',
  103.      &' OUTPUT] : ',/,'$     >')
  104.       READ( *,701,ERR=704)  OTFILE
  105.       CALL STR0PC( OTFILE, OTFILE)
  106.       IF( OTFILE.NE.' ') THEN
  107.       OPEN ( UNIT=6,FILE=OTFILE,STATUS='NEW',ERR=704)
  108.       ENDIF
  109.       GOTO 705
  110.   702 CALL ERROR
  111.       GOTO 706
  112.   704 CALL ERROR
  113.       GOTO 707
  114. C***
  115.   705 CONTINUE
  116.       CALL SECNDS(EXTIM)
  117.       FJ=(0.,1.)
  118.       LD=600
  119.       NXA(1)=0
  120.       IRESRV=90000
  121. C***
  122.     1 KCOM=0
  123.       IFRTMW=0
  124. C***
  125.       IFRTMP=0
  126.     2 KCOM= KCOM+1
  127.       IF( KCOM.GT.5) KCOM=5
  128. C***
  129.       READ( 5,125)  AIN,( COM( I, KCOM), I=1,19)
  130. C***
  131.       CALL STR0PC( AIN, AIN)
  132.       IF( KCOM.GT.1) GOTO 3
  133.       WRITE( 6,126) 
  134.       WRITE( 6,127) 
  135.       WRITE( 6,128) 
  136.     3 WRITE( 6,129) ( COM( I, KCOM), I=1,19)
  137.       IF( AIN.EQ. ATST(11)) GOTO 2
  138.       IF( AIN.EQ. ATST(1)) GOTO 4
  139.       WRITE( 6,130) 
  140.       STOP
  141.     4 CONTINUE
  142.       DO 5  I=1, LD
  143.     5 ZARRAY( I)=(0.,0.)
  144.       MPCNT=0
  145. C                                                                       
  146. C     SET UP GEOMETRY DATA IN SUBROUTINE DATAGN                         
  147. C                                                                       
  148.       IMAT=0
  149.       CALL DATAGN
  150.       IFLOW=1
  151. C                                                                       
  152. C     CORE ALLOCATION FOR ARRAYS B, C, AND D FOR N.G.F. SOLUTION        
  153. C                                                                       
  154.       IF( IMAT.EQ.0) GOTO 326
  155.       NEQ= N1+2* M1
  156.       NEQ2= N- N1+2*( M- M1)+ NSCON+2* NPCON
  157.       CALL FBNGF( NEQ, NEQ2, IRESRV, IB11, IC11, ID11, IX11)
  158.       GOTO 6
  159.   326 NEQ= N+2* M
  160.       NEQ2=0
  161.       IB11=1
  162.       IC11=1
  163.       ID11=1
  164.       IX11=1
  165.       ICASX=0
  166.     6 NPEQ= NP+2* MP
  167. C                                                                       
  168. C     DEFAULT VALUES FOR INPUT PARAMETERS AND FLAGS                     
  169. C                                                                       
  170. C***
  171.       WRITE( 6,135) 
  172.       IPLP1=0
  173.       IPLP2=0
  174.       IPLP3=0
  175. C***
  176.       IPLP4=0
  177.       IGO=1
  178.       FMHZS= CVEL
  179.       NFRQ=1
  180.       RKH=1.
  181.       IEXK=0
  182.       IXTYP=0
  183.       NLOAD=0
  184.       NONET=0
  185.       NEAR=-1
  186.       IPTFLG=-2
  187.       IPTFLQ=-1
  188.       IFAR=-1
  189.       ZRATI=(1.,0.)
  190.       IPED=0
  191.       IRNGF=0
  192.       NCOUP=0
  193.       ICOUP=0
  194.       IF( ICASX.GT.0) GOTO 14
  195.       FMHZ= CVEL
  196.       NLODF=0
  197.       KSYMP=1
  198.       NRADL=0
  199. C                                                                       
  200. C     MAIN INPUT SECTION - STANDARD READ STATEMENT - JUMPS TO APPRO-    
  201. C     PRIATE SECTION FOR SPECIFIC PARAMETER SET UP                      
  202. C                                                                       
  203. C14    READ(5,136)AIN,ITMP1,ITMP2,ITMP3,ITMP4,TMP1,TMP2,TMP3,TMP4,TMP5, 
  204. C     1TMP6                                                             
  205. C***
  206.       IPERF=0
  207. C***
  208.    14 CALL READMN( AIN, ITMP1, ITMP2, ITMP3, ITMP4, TMP1, TMP2, TMP3, 
  209.      &TMP4, TMP5, TMP6)
  210.       MPCNT= MPCNT+1
  211.       WRITE( 6,137)  MPCNT, AIN, ITMP1, ITMP2, ITMP3, ITMP4, TMP1, TMP2
  212.      &, TMP3, TMP4, TMP5, TMP6
  213.       IF( AIN.EQ. ATST(2)) GOTO 16
  214.       IF( AIN.EQ. ATST(3)) GOTO 17
  215.       IF( AIN.EQ. ATST(4)) GOTO 21
  216.       IF( AIN.EQ. ATST(5)) GOTO 24
  217.       IF( AIN.EQ. ATST(6)) GOTO 28
  218.       IF( AIN.EQ. ATST(14)) GOTO 28
  219.       IF( AIN.EQ. ATST(15)) GOTO 31
  220.       IF( AIN.EQ. ATST(18)) GOTO 319
  221.       IF( AIN.EQ. ATST(7)) GOTO 37
  222.       IF( AIN.EQ. ATST(8)) GOTO 32
  223.       IF( AIN.EQ. ATST(17)) GOTO 208
  224.       IF( AIN.EQ. ATST(9)) GOTO 34
  225.       IF( AIN.EQ. ATST(10)) GOTO 36
  226.       IF( AIN.EQ. ATST(16)) GOTO 305
  227.       IF( AIN.EQ. ATST(19)) GOTO 320
  228.       IF( AIN.EQ. ATST(12)) GOTO 1
  229.       IF( AIN.EQ. ATST(20)) GOTO 322
  230. C***
  231.       IF( AIN.EQ. ATST(21)) GOTO 304
  232. C***
  233.       IF( AIN.EQ. ATST(22)) GOTO 330
  234.       IF( AIN.NE. ATST(13)) GOTO 15
  235.       CALL SECNDS( TMP1)
  236.       TMP1= TMP1- EXTIM
  237.       WRITE( 6,201)  TMP1
  238.       STOP
  239.    15 WRITE( 6,138) 
  240. C                                                                       
  241. C     FREQUENCY PARAMETERS                                              
  242. C                                                                       
  243.       STOP
  244.    16 IFRQ= ITMP1
  245.       IF( ICASX.EQ.0) GOTO 8
  246.       WRITE( 6,303)  AIN
  247.       STOP
  248.     8 NFRQ= ITMP2
  249.       IF( NFRQ.EQ.0) NFRQ=1
  250.       FMHZ= TMP1
  251.       DELFRQ= TMP2
  252.       IF( IPED.EQ.1) ZPNORM=0.
  253.       IGO=1
  254.       IFLOW=1
  255. C                                                                       
  256. C     MATRIX INTEGRATION LIMIT                                          
  257. C                                                                       
  258.       GOTO 14
  259.   305 RKH= TMP1
  260.       IF( IGO.GT.2) IGO=2
  261.       IFLOW=1
  262. C                                                                       
  263. C     EXTENDED THIN WIRE KERNEL OPTION                                  
  264. C                                                                       
  265.       GOTO 14
  266.   320 IEXK=1
  267.       IF( ITMP1.EQ.-1) IEXK=0
  268.       IF( IGO.GT.2) IGO=2
  269.       IFLOW=1
  270. C                                                                       
  271. C     MAXIMUM COUPLING BETWEEN ANTENNAS                                 
  272. C                                                                       
  273.       GOTO 14
  274.   304 IF( IFLOW.NE.2) NCOUP=0
  275.       ICOUP=0
  276.       IFLOW=2
  277.       IF( ITMP2.EQ.0) GOTO 14
  278.       NCOUP= NCOUP+1
  279.       IF( NCOUP.GT.5) GOTO 312
  280.       NCTAG( NCOUP)= ITMP1
  281.       NCSEG( NCOUP)= ITMP2
  282.       IF( ITMP4.EQ.0) GOTO 14
  283.       NCOUP= NCOUP+1
  284.       IF( NCOUP.GT.5) GOTO 312
  285.       NCTAG( NCOUP)= ITMP3
  286.       NCSEG( NCOUP)= ITMP4
  287.       GOTO 14
  288.   312 WRITE( 6,313) 
  289. C                                                                       
  290. C     LOADING PARAMETERS                                                
  291. C                                                                       
  292.       STOP
  293.    17 IF( IFLOW.EQ.3) GOTO 18
  294.       NLOAD=0
  295.       IFLOW=3
  296.       IF( IGO.GT.2) IGO=2
  297.       IF( ITMP1.EQ.(-1)) GOTO 14
  298.    18 NLOAD= NLOAD+1
  299.       IF( NLOAD.LE. LOADMX) GOTO 19
  300.       WRITE( 6,139) 
  301.       STOP
  302.    19 LDTYP( NLOAD)= ITMP1
  303.       LDTAG( NLOAD)= ITMP2
  304.       IF( ITMP4.EQ.0) ITMP4= ITMP3
  305.       LDTAGF( NLOAD)= ITMP3
  306.       LDTAGT( NLOAD)= ITMP4
  307.       IF( ITMP4.GE. ITMP3) GOTO 20
  308.       WRITE( 6,140)  NLOAD, ITMP3, ITMP4
  309.       STOP
  310.    20 ZLR( NLOAD)= TMP1
  311.       ZLI( NLOAD)= TMP2
  312.       ZLC( NLOAD)= TMP3
  313. C                                                                       
  314. C     GROUND PARAMETERS UNDER THE ANTENNA                               
  315. C                                                                       
  316.       GOTO 14
  317.    21 IFLOW=4
  318.       IF( ICASX.EQ.0) GOTO 10
  319.       WRITE( 6,303)  AIN
  320.       STOP
  321.    10 IF( IGO.GT.2) IGO=2
  322.       IF( ITMP1.NE.(-1)) GOTO 22
  323.       KSYMP=1
  324.       NRADL=0
  325.       IPERF=0
  326.       GOTO 14
  327.    22 IPERF= ITMP1
  328.       NRADL= ITMP2
  329.       KSYMP=2
  330.       EPSR= TMP1
  331.       SIG= TMP2
  332.       IF( NRADL.EQ.0) GOTO 23
  333.       IF( IPERF.NE.2) GOTO 314
  334.       WRITE( 6,390) 
  335.       STOP
  336.   314 SCRWLT= TMP3
  337.       SCRWRT= TMP4
  338.       GOTO 14
  339.    23 EPSR2= TMP3
  340.       SIG2= TMP4
  341.       CLT= TMP5
  342.       CHT= TMP6
  343. C                                                                       
  344. C     EXCITATION PARAMETERS                                             
  345. C                                                                       
  346.       GOTO 14
  347.    24 IF( IFLOW.EQ.5) GOTO 25
  348.       NSANT=0
  349.       NVQD=0
  350.       IPED=0
  351.       IFLOW=5
  352.       IF( IGO.GT.3) IGO=3
  353.    25 MASYM= ITMP4/10
  354.       IF( ITMP1.GT.0.AND. ITMP1.NE.5) GOTO 27
  355.       IXTYP= ITMP1
  356.       NTSOL=0
  357.       IF( IXTYP.EQ.0) GOTO 205
  358.       NVQD= NVQD+1
  359.       IF( NVQD.GT. NSMAX) GOTO 206
  360.       IVQD( NVQD)= ISEGNO( ITMP2, ITMP3)
  361.       VQD( NVQD)= CMPLX( TMP1, TMP2)
  362.       IF( ABS( VQD( NVQD)).LT.1.D-20) VQD( NVQD)=(1.,0.)
  363.       GOTO 207
  364.   205 NSANT= NSANT+1
  365.       IF( NSANT.LE. NSMAX) GOTO 26
  366.   206 WRITE( 6,141) 
  367.       STOP
  368.    26 ISANT( NSANT)= ISEGNO( ITMP2, ITMP3)
  369.       VSANT( NSANT)= CMPLX( TMP1, TMP2)
  370.       IF( ABS( VSANT( NSANT)).LT.1.D-20) VSANT( NSANT)=(1.,0.)
  371.   207 IPED= ITMP4- MASYM*10
  372.       ZPNORM= TMP3
  373.       IF( IPED.EQ.1.AND. ZPNORM.GT.0) IPED=2
  374.       GOTO 14
  375.    27 IF( IXTYP.EQ.0.OR. IXTYP.EQ.5) NTSOL=0
  376.       IXTYP= ITMP1
  377.       NTHI= ITMP2
  378.       NPHI= ITMP3
  379.       XPR1= TMP1
  380.       XPR2= TMP2
  381.       XPR3= TMP3
  382.       XPR4= TMP4
  383.       XPR5= TMP5
  384.       XPR6= TMP6
  385.       NSANT=0
  386.       NVQD=0
  387.       THETIS= XPR1
  388.       PHISS= XPR2
  389. C                                                                       
  390. C     NETWORK PARAMETERS                                                
  391. C                                                                       
  392.       GOTO 14
  393.    28 IF( IFLOW.EQ.6) GOTO 29
  394.       NONET=0
  395.       NTSOL=0
  396.       IFLOW=6
  397.       IF( IGO.GT.3) IGO=3
  398.       IF( ITMP2.EQ.(-1)) GOTO 14
  399.    29 NONET= NONET+1
  400.       IF( NONET.LE. NETMX) GOTO 30
  401.       WRITE( 6,142) 
  402.       STOP
  403.    30 NTYP( NONET)=2
  404.       IF( AIN.EQ. ATST(6)) NTYP( NONET)=1
  405.       ISEG1( NONET)= ISEGNO( ITMP1, ITMP2)
  406.       ISEG2( NONET)= ISEGNO( ITMP3, ITMP4)
  407.       X11R( NONET)= TMP1
  408.       X11I( NONET)= TMP2
  409.       X12R( NONET)= TMP3
  410.       X12I( NONET)= TMP4
  411.       X22R( NONET)= TMP5
  412.       X22I( NONET)= TMP6
  413.       IF( NTYP( NONET).EQ.1.OR. TMP1.GT.0.) GOTO 14
  414.       NTYP( NONET)=3
  415. C***
  416. C
  417. C     PLOT FLAGS
  418. C
  419.       X11R( NONET)=- TMP1
  420.   330 IPLP1= ITMP1
  421.       IPLP2= ITMP2
  422.       IPLP3= ITMP3
  423. C***
  424.       IPLP4= ITMP4
  425. C                                                                       
  426. C     PRINT CONTROL FOR CURRENT                                         
  427. C                                                                       
  428.       GOTO 14
  429.    31 IPTFLG= ITMP1
  430.       IPTAG= ITMP2
  431.       IPTAGF= ITMP3
  432.       IPTAGT= ITMP4
  433.       IF( ITMP3.EQ.0.AND. IPTFLG.NE.-1) IPTFLG=-2
  434.       IF( ITMP4.EQ.0) IPTAGT= IPTAGF
  435. C                                                                       
  436. C     WRITE CONTROL FOR CHARGE                                          
  437. C                                                                       
  438.       GOTO 14
  439.   319 IPTFLQ= ITMP1
  440.       IPTAQ= ITMP2
  441.       IPTAQF= ITMP3
  442.       IPTAQT= ITMP4
  443.       IF( ITMP3.EQ.0.AND. IPTFLQ.NE.-1) IPTFLQ=-2
  444.       IF( ITMP4.EQ.0) IPTAQT= IPTAQF
  445. C                                                                       
  446. C     NEAR FIELD CALCULATION PARAMETERS                                 
  447. C                                                                       
  448.       GOTO 14
  449.   208 NFEH=1
  450.       GOTO 209
  451.    32 NFEH=0
  452.   209 IF(.NOT.( IFLOW.EQ.8.AND. NFRQ.NE.1)) GOTO 33
  453.       WRITE( 6,143) 
  454.    33 NEAR= ITMP1
  455.       NRX= ITMP2
  456.       NRY= ITMP3
  457.       NRZ= ITMP4
  458.       XNR= TMP1
  459.       YNR= TMP2
  460.       ZNR= TMP3
  461.       DXNR= TMP4
  462.       DYNR= TMP5
  463.       DZNR= TMP6
  464.       IFLOW=8
  465.       IF( NFRQ.NE.1) GOTO 14
  466. C                                                                       
  467. C     GROUND REPRESENTATION                                             
  468. C                                                                       
  469.       GOTO (41,46,53,71,72), IGO
  470.    34 EPSR2= TMP1
  471.       SIG2= TMP2
  472.       CLT= TMP3
  473.       CHT= TMP4
  474.       IFLOW=9
  475. C                                                                       
  476. C     STANDARD OBSERVATION ANGLE PARAMETERS                             
  477. C                                                                       
  478.       GOTO 14
  479.    36 IFAR= ITMP1
  480.       NTH= ITMP2
  481.       NPH= ITMP3
  482.       IF( NTH.EQ.0) NTH=1
  483.       IF( NPH.EQ.0) NPH=1
  484.       IPD= ITMP4/10
  485.       IAVP= ITMP4- IPD*10
  486.       INOR= IPD/10
  487.       IPD= IPD- INOR*10
  488.       IAX= INOR/10
  489.       INOR= INOR- IAX*10
  490.       IF( IAX.NE.0) IAX=1
  491.       IF( IPD.NE.0) IPD=1
  492.       IF( NTH.LT.2.OR. NPH.LT.2) IAVP=0
  493.       IF( IFAR.EQ.1) IAVP=0
  494.       THETS= TMP1
  495.       PHIS= TMP2
  496.       DTH= TMP3
  497.       DPH= TMP4
  498.       RFLD= TMP5
  499.       GNOR= TMP6
  500.       IFLOW=10
  501. C                                                                       
  502. C     WRITE NUMERICAL GREEN'S FUNCTION TAPE                             
  503. C                                                                       
  504.       GOTO (41,46,53,71,78), IGO
  505.   322 IFLOW=12
  506.       IF( ICASX.EQ.0) GOTO 301
  507.       WRITE( 6,302) 
  508.       STOP
  509.   301 IRNGF= IRESRV/2
  510. C                                                                       
  511. C     EXECUTE CARD  -  CALC. INCLUDING RADIATED FIELDS                  
  512. C                                                                       
  513.       GOTO (41,46,52,52,52), IGO
  514.    37 IF( IFLOW.EQ.10.AND. ITMP1.EQ.0) GOTO 14
  515.       IF( NFRQ.EQ.1.AND. ITMP1.EQ.0.AND. IFLOW.GT.7) GOTO 14
  516.       IF( ITMP1.NE.0) GOTO 39
  517.       IF( IFLOW.GT.7) GOTO 38
  518.       IFLOW=7
  519.       GOTO 40
  520.    38 IFLOW=11
  521.       GOTO 40
  522.    39 IFAR=0
  523.       RFLD=0.
  524.       IPD=0
  525.       IAVP=0
  526.       INOR=0
  527.       IAX=0
  528.       NTH=91
  529.       NPH=1
  530.       THETS=0.
  531.       PHIS=0.
  532.       DTH=1.0
  533.       DPH=0.
  534.       IF( ITMP1.EQ.2) PHIS=90.
  535.       IF( ITMP1.NE.3) GOTO 40
  536.       NPH=2
  537.       DPH=90.
  538. C                                                                       
  539. C     END OF THE MAIN INPUT SECTION                                     
  540. C                                                                       
  541. C     BEGINNING OF THE FREQUENCY DO LOOP                                
  542. C                                                                       
  543.    40 GOTO (41,46,53,71,78), IGO
  544. C***
  545.    41 MHZ=1
  546.       IF( N.EQ.0.OR. IFRTMW.EQ.1) GOTO 406
  547.       IFRTMW=1
  548.       DO 445  I=1, N
  549.       XTEMP( I)= X( I)
  550.       YTEMP( I)= Y( I)
  551.       ZTEMP( I)= Z( I)
  552.       SITEMP( I)= SI( I)
  553.       BITEMP( I)= BI( I)
  554.   445 CONTINUE
  555.   406 IF( M.EQ.0.OR. IFRTMP.EQ.1) GOTO 407
  556.       IFRTMP=1
  557.       J= LD+1
  558.       DO 545  I=1, M
  559.       J= J-1
  560.       XTEMP( J)= X( J)
  561.       YTEMP( J)= Y( J)
  562.       ZTEMP( J)= Z( J)
  563.       BITEMP( J)= BI( J)
  564.   545 CONTINUE
  565.   407 CONTINUE
  566. C***
  567. C     CORE ALLOCATION FOR PRIMARY INTERACTON MATRIX.  (A)               
  568.       FMHZ1= FMHZ
  569.       IF( IMAT.EQ.0) CALL FBLOCK( NPEQ, NEQ, IRESRV, IRNGF, IPSYM)
  570.    42 IF( MHZ.EQ.1) GOTO 44
  571. C      FMHZ=FMHZ+DELFRQ                                                 
  572. C***
  573.       IF( IFRQ.EQ.1) GOTO 43
  574.       FMHZ= FMHZ1+( MHZ-1)* DELFRQ
  575.       GOTO 44
  576.    43 FMHZ= FMHZ* DELFRQ
  577. C***
  578.    44 FR= FMHZ/ CVEL
  579.       WLAM= CVEL/ FMHZ
  580.       WRITE( 6,145)  FMHZ, WLAM
  581.       WRITE( 6,196)  RKH
  582. C     FREQUENCY SCALING OF GEOMETRIC PARAMETERS                         
  583. C***      FMHZS=FMHZ                                                    
  584.       IF( IEXK.EQ.1) WRITE( 6,321) 
  585.       IF( N.EQ.0) GOTO 306
  586. C***
  587.       DO 45  I=1, N
  588.       X( I)= XTEMP( I)* FR
  589.       Y( I)= YTEMP( I)* FR
  590.       Z( I)= ZTEMP( I)* FR
  591.       SI( I)= SITEMP( I)* FR
  592. C***
  593.    45 BI( I)= BITEMP( I)* FR
  594.   306 IF( M.EQ.0) GOTO 307
  595.       FR2= FR* FR
  596.       J= LD+1
  597.       DO 245  I=1, M
  598. C***
  599.       J= J-1
  600.       X( J)= XTEMP( J)* FR
  601.       Y( J)= YTEMP( J)* FR
  602.       Z( J)= ZTEMP( J)* FR
  603. C***
  604.   245 BI( J)= BITEMP( J)* FR2
  605. C     STRUCTURE SEGMENT LOADING                                         
  606.   307 IGO=2
  607.    46 WRITE( 6,146) 
  608.       IF( NLOAD.NE.0) CALL LOAD( LDTYP, LDTAG, LDTAGF, LDTAGT, ZLR, ZLI
  609.      &, ZLC)
  610.       IF( NLOAD.EQ.0.AND. NLODF.EQ.0) WRITE( 6,147) 
  611. C     GROUND PARAMETER                                                  
  612.       IF( NLOAD.EQ.0.AND. NLODF.NE.0) WRITE( 6,327) 
  613.       WRITE( 6,148) 
  614.       IF( KSYMP.EQ.1) GOTO 49
  615.       FRATI=(1.,0.)
  616.       IF( IPERF.EQ.1) GOTO 48
  617.       IF( SIG.LT.0.) SIG=- SIG/(59.96* WLAM)
  618.       EPSC= CMPLX( EPSR,- SIG* WLAM*59.96)
  619.       ZRATI=1./ SQRT( EPSC)
  620.       U= ZRATI
  621.       U2= U* U
  622.       IF( NRADL.EQ.0) GOTO 47
  623.       SCRWL= SCRWLT/ WLAM
  624.       SCRWR= SCRWRT/ WLAM
  625.       T1= FJ*2367.067D+0/ DFLOAT( NRADL)
  626.       T2= SCRWR* DFLOAT( NRADL)
  627.       WRITE( 6,170)  NRADL, SCRWLT, SCRWRT
  628.       WRITE( 6,149) 
  629.    47 IF( IPERF.EQ.2) GOTO 328
  630.       WRITE( 6,391) 
  631.       GOTO 329
  632.   328 IF( NXA(1).EQ.0) READ( 21)  AR1, AR2, AR3, EPSCF, DXA, DYA, XSA, 
  633.      &YSA, NXA, NYA
  634.       FRATI=( EPSC-1.)/( EPSC+1.)
  635.       IF( ABS(( EPSCF- EPSC)/ EPSC).LT.1.D-3) GOTO 400
  636.       WRITE( 6,393)  EPSCF, EPSC
  637.       STOP
  638.   400 WRITE( 6,392) 
  639.   329 WRITE( 6,150)  EPSR, SIG, EPSC
  640.       GOTO 50
  641.    48 WRITE( 6,151) 
  642.       GOTO 50
  643.    49 WRITE( 6,152) 
  644. C * * *                                                                 
  645. C     FILL AND FACTOR PRIMARY INTERACTION MATRIX                        
  646. C                                                                       
  647.    50 CONTINUE
  648.       CALL SECNDS( TIM1)
  649.       IF( ICASX.NE.0) GOTO 324
  650.       CALL CMSET( NEQ, CM, RKH, IEXK)
  651.       CALL SECNDS( TIM2)
  652.       TIM= TIM2- TIM1
  653.       CALL FACTRS( NPEQ, NEQ, CM, IP, IX,11,12,13,14)
  654. C                                                                       
  655. C     N.G.F. - FILL B, C, AND D AND FACTOR D-C(INV(A)B)                 
  656. C                                                                       
  657. C ****
  658.       GOTO 323
  659. C ****
  660.   324 IF( NEQ2.EQ.0) GOTO 333
  661.       CALL CMNGF( CM( IB11), CM( IC11), CM( ID11), NPBX, NEQ, NEQ2, RKH
  662.      &, IEXK)
  663.       CALL SECNDS( TIM2)
  664.       TIM= TIM2- TIM1
  665.       CALL FACGF( CM, CM( IB11), CM( IC11), CM( ID11), CM( IX11), IP, 
  666.      &IX, NP, N1, MP, M1, NEQ, NEQ2)
  667.   323 CALL SECNDS( TIM1)
  668.       TIM2= TIM1- TIM2
  669.       WRITE( 6,153)  TIM, TIM2
  670.   333 IGO=3
  671.       NTSOL=0
  672. C     WRITE N.G.F. FILE                                                 
  673.       IF( IFLOW.NE.12) GOTO 53
  674.    52 CALL GFOUT
  675. C                                                                       
  676. C     EXCITATION SET UP (RIGHT HAND SIDE, -E INC.)                      
  677. C                                                                       
  678.       GOTO 14
  679.    53 NTHIC=1
  680.       NPHIC=1
  681.       INC=1
  682.       NPRINT=0
  683.    54 IF( IXTYP.EQ.0.OR. IXTYP.EQ.5) GOTO 56
  684.       IF( IPTFLG.LE.0.OR. IXTYP.EQ.4) WRITE( 6,154) 
  685.       TMP5= TA* XPR5
  686.       TMP4= TA* XPR4
  687.       IF( IXTYP.NE.4) GOTO 55
  688.       TMP1= XPR1/ WLAM
  689.       TMP2= XPR2/ WLAM
  690.       TMP3= XPR3/ WLAM
  691.       TMP6= XPR6/( WLAM* WLAM)
  692.       WRITE( 6,156)  XPR1, XPR2, XPR3, XPR4, XPR5, XPR6
  693.       GOTO 56
  694.    55 TMP1= TA* XPR1
  695.       TMP2= TA* XPR2
  696.       TMP3= TA* XPR3
  697.       TMP6= XPR6
  698.       IF( IPTFLG.LE.0) WRITE( 6,155)  XPR1, XPR2, XPR3, HPOL( IXTYP), 
  699.      &XPR6
  700. C                                                                       
  701. C     MATRIX SOLVING  (NETWK CALLS SOLVES)                              
  702. C                                                                       
  703.    56 CALL ETMNS( TMP1, TMP2, TMP3, TMP4, TMP5, TMP6, IXTYP, CUR)
  704.       IF( NONET.EQ.0.OR. INC.GT.1) GOTO 60
  705.       WRITE( 6,158) 
  706.       ITMP3=0
  707.       ITMP1= NTYP(1)
  708.       DO 59  I=1,2
  709.       IF( ITMP1.EQ.3) ITMP1=2
  710.       IF( ITMP1.EQ.2) WRITE( 6,159) 
  711.       IF( ITMP1.EQ.1) WRITE( 6,160) 
  712.       DO 58  J=1, NONET
  713.       ITMP2= NTYP( J)
  714.       IF(( ITMP2/ ITMP1).EQ.1) GOTO 57
  715.       ITMP3= ITMP2
  716.       GOTO 58
  717.    57 ITMP4= ISEG1( J)
  718.       ITMP5= ISEG2( J)
  719.       IF( ITMP2.GE.2.AND. X11I( J).LE.0.) X11I( J)= WLAM* SQRT(( X( 
  720.      &ITMP5)- X( ITMP4))**2+( Y( ITMP5)- Y( ITMP4))**2+( Z( ITMP5)- Z( 
  721.      &ITMP4))**2)
  722.       WRITE( 6,157)  ITAG( ITMP4), ITMP4, ITAG( ITMP5), ITMP5, X11R( J)
  723.      &, X11I( J), X12R( J), X12I( J), X22R( J), X22I( J), PNET(2* ITMP2
  724.      &-1), PNET(2* ITMP2)
  725.    58 CONTINUE
  726.       IF( ITMP3.EQ.0) GOTO 60
  727.       ITMP1= ITMP3
  728.    59 CONTINUE
  729.    60 CONTINUE
  730.       IF( INC.GT.1.AND. IPTFLG.GT.0) NPRINT=1
  731.       CALL NETWK( CM, CM( IB11), CM( IC11), CM( ID11), IP, CUR)
  732.       NTSOL=1
  733.       IF( IPED.EQ.0) GOTO 61
  734.       ITMP1= MHZ+4*( MHZ-1)
  735.       IF( ITMP1.GT.( NORMF-3)) GOTO 61
  736.       FNORM( ITMP1)= REAL( ZPED)
  737.       FNORM( ITMP1+1)= AIMAG( ZPED)
  738.       FNORM( ITMP1+2)= ABS( ZPED)
  739.       FNORM( ITMP1+3)= CANG( ZPED)
  740.       IF( IPED.EQ.2) GOTO 61
  741.       IF( FNORM( ITMP1+2).GT. ZPNORM) ZPNORM= FNORM( ITMP1+2)
  742. C                                                                       
  743. C     PRINTING STRUCTURE CURRENTS                                       
  744. C                                                                       
  745.    61 CONTINUE
  746.       IF( N.EQ.0) GOTO 308
  747.       IF( IPTFLG.EQ.(-1)) GOTO 63
  748.       IF( IPTFLG.GT.0) GOTO 62
  749.       WRITE( 6,161) 
  750.       WRITE( 6,162) 
  751.       GOTO 63
  752.    62 IF( IPTFLG.EQ.3.OR. INC.GT.1) GOTO 63
  753.       WRITE( 6,163)  XPR3, HPOL( IXTYP), XPR6
  754.    63 PLOSS=0.
  755.       ITMP1=0
  756.       JUMP= IPTFLG+1
  757.       DO 69  I=1, N
  758.       CURI= CUR( I)* WLAM
  759.       CMAG= ABS( CURI)
  760.       PH= CANG( CURI)
  761.       IF( NLOAD.EQ.0.AND. NLODF.EQ.0) GOTO 64
  762.       IF( ABS( REAL( ZARRAY( I))).LT.1.D-20) GOTO 64
  763.       PLOSS= PLOSS+.5* CMAG* CMAG* REAL( ZARRAY( I))* SI( I)
  764.    64 IF( JUMP) 68,69,65
  765.    65 IF( IPTAG.EQ.0) GOTO 66
  766.       IF( ITAG( I).NE. IPTAG) GOTO 69
  767.    66 ITMP1= ITMP1+1
  768.       IF( ITMP1.LT. IPTAGF.OR. ITMP1.GT. IPTAGT) GOTO 69
  769.       IF( IPTFLG.EQ.0) GOTO 68
  770.       IF( IPTFLG.LT.2.OR. INC.GT. NORMF) GOTO 67
  771.       FNORM( INC)= CMAG
  772.       ISAVE= I
  773.    67 IF( IPTFLG.NE.3) WRITE( 6,164)  XPR1, XPR2, CMAG, PH, I
  774.       GOTO 69
  775. C***
  776.    68 WRITE( 6,165)  I, ITAG( I), X( I), Y( I), Z( I), SI( I), CURI, 
  777.      &CMAG, PH
  778.       IF( IPLP1.NE.1) GOTO 69
  779.       IF( IPLP2.EQ.1) WRITE( 8,*)  CURI
  780. C***
  781.       IF( IPLP2.EQ.2) WRITE( 8,*)  CMAG, PH
  782.    69 CONTINUE
  783.       IF( IPTFLQ.EQ.(-1)) GOTO 308
  784.       WRITE( 6,315) 
  785.       ITMP1=0
  786.       FR=1.D-6/ FMHZ
  787.       DO 316  I=1, N
  788.       IF( IPTFLQ.EQ.(-2)) GOTO 318
  789.       IF( IPTAQ.EQ.0) GOTO 317
  790.       IF( ITAG( I).NE. IPTAQ) GOTO 316
  791.   317 ITMP1= ITMP1+1
  792.       IF( ITMP1.LT. IPTAQF.OR. ITMP1.GT. IPTAQT) GOTO 316
  793.   318 CURI= FR* CMPLX(- BII( I), BIR( I))
  794.       CMAG= ABS( CURI)
  795.       PH= CANG( CURI)
  796.       WRITE( 6,165)  I, ITAG( I), X( I), Y( I), Z( I), SI( I), CURI, 
  797.      &CMAG, PH
  798.   316 CONTINUE
  799.   308 IF( M.EQ.0) GOTO 310
  800.       WRITE( 6,197) 
  801.       J= N-2
  802.       ITMP1= LD+1
  803.       DO 309  I=1, M
  804.       J= J+3
  805.       ITMP1= ITMP1-1
  806.       EX= CUR( J)
  807.       EY= CUR( J+1)
  808.       EZ= CUR( J+2)
  809.       ETH= EX* T1X( ITMP1)+ EY* T1Y( ITMP1)+ EZ* T1Z( ITMP1)
  810.       EPH= EX* T2X( ITMP1)+ EY* T2Y( ITMP1)+ EZ* T2Z( ITMP1)
  811.       ETHM= ABS( ETH)
  812.       ETHA= CANG( ETH)
  813.       EPHM= ABS( EPH)
  814. C309   WRITE(6,198) I,X(ITMP1),Y(ITMP1),Z(ITMP1),ETHM,ETHA,EPHM,EPHA,E  
  815. C     1X,EY, EZ                                                         
  816. C***
  817.       EPHA= CANG( EPH)
  818.       WRITE( 6,198)  I, X( ITMP1), Y( ITMP1), Z( ITMP1), ETHM, ETHA, 
  819.      &EPHM, EPHA, EX, EY, EZ
  820.       IF( IPLP1.NE.1) GOTO 309
  821.       IF( IPLP3.EQ.1) WRITE( 8,*)  EX
  822.       IF( IPLP3.EQ.2) WRITE( 8,*)  EY
  823.       IF( IPLP3.EQ.3) WRITE( 8,*)  EZ
  824.       IF( IPLP3.EQ.4) WRITE( 8,*)  EX, EY, EZ
  825. C***
  826.   309 CONTINUE
  827.   310 IF( IXTYP.NE.0.AND. IXTYP.NE.5) GOTO 70
  828.       TMP1= PIN- PNLS- PLOSS
  829.       TMP2=100.* TMP1/ PIN
  830.       WRITE( 6,166)  PIN, TMP1, PLOSS, PNLS, TMP2
  831.    70 CONTINUE
  832.       IGO=4
  833.       IF( NCOUP.GT.0) CALL COUPLE( CUR, WLAM)
  834.       IF( IFLOW.NE.7) GOTO 71
  835.       IF( IXTYP.GT.0.AND. IXTYP.LT.4) GOTO 113
  836.       IF( NFRQ.NE.1) GOTO 120
  837.       WRITE( 6,135) 
  838.       GOTO 14
  839. C                                                                       
  840. C     NEAR FIELD CALCULATION                                            
  841. C                                                                       
  842.    71 IGO=5
  843.    72 IF( NEAR.EQ.(-1)) GOTO 78
  844.       CALL NFPAT
  845.       IF( MHZ.EQ. NFRQ) NEAR=-1
  846.       IF( NFRQ.NE.1) GOTO 78
  847.       WRITE( 6,135) 
  848. C                                                                       
  849. C     STANDARD FAR FIELD CALCULATION                                    
  850. C                                                                       
  851.       GOTO 14
  852.    78 IF( IFAR.EQ.-1) GOTO 113
  853.       PINR= PIN
  854.       PNLR= PNLS
  855.       CALL RDPAT
  856.   113 IF( IXTYP.EQ.0.OR. IXTYP.GE.4) GOTO 119
  857.       NTHIC= NTHIC+1
  858.       INC= INC+1
  859.       XPR1= XPR1+ XPR4
  860.       IF( NTHIC.LE. NTHI) GOTO 54
  861.       NTHIC=1
  862.       XPR1= THETIS
  863.       XPR2= XPR2+ XPR5
  864.       NPHIC= NPHIC+1
  865.       IF( NPHIC.LE. NPHI) GOTO 54
  866.       NPHIC=1
  867.       XPR2= PHISS
  868. C     NORMALIZED RECEIVING PATTERN PRINTED                              
  869.       IF( IPTFLG.LT.2) GOTO 119
  870.       ITMP1= NTHI* NPHI
  871.       IF( ITMP1.LE. NORMF) GOTO 114
  872.       ITMP1= NORMF
  873.       WRITE( 6,181) 
  874.   114 TMP1= FNORM(1)
  875.       DO 115  J=2, ITMP1
  876.       IF( FNORM( J).GT. TMP1) TMP1= FNORM( J)
  877.   115 CONTINUE
  878.       WRITE( 6,182)  TMP1, XPR3, HPOL( IXTYP), XPR6, ISAVE
  879.       DO 118  J=1, NPHI
  880.       ITMP2= NTHI*( J-1)
  881.       DO 116  I=1, NTHI
  882.       ITMP3= I+ ITMP2
  883.       IF( ITMP3.GT. ITMP1) GOTO 117
  884.       TMP2= FNORM( ITMP3)/ TMP1
  885.       TMP3= DB20( TMP2)
  886.       WRITE( 6,183)  XPR1, XPR2, TMP3, TMP2
  887.       XPR1= XPR1+ XPR4
  888.   116 CONTINUE
  889.   117 XPR1= THETIS
  890.       XPR2= XPR2+ XPR5
  891.   118 CONTINUE
  892.       XPR2= PHISS
  893.   119 IF( MHZ.EQ. NFRQ) IFAR=-1
  894.       IF( NFRQ.NE.1) GOTO 120
  895.       WRITE( 6,135) 
  896.       GOTO 14
  897.   120 MHZ= MHZ+1
  898.       IF( MHZ.LE. NFRQ) GOTO 42
  899.       IF( IPED.EQ.0) GOTO 123
  900.       IF( NVQD.LT.1) GOTO 199
  901.       WRITE( 6,184)  IVQD( NVQD), ZPNORM
  902.       GOTO 204
  903.   199 WRITE( 6,184)  ISANT( NSANT), ZPNORM
  904.   204 ITMP1= NFRQ
  905.       IF( ITMP1.LE.( NORMF/4)) GOTO 121
  906.       ITMP1= NORMF/4
  907.       WRITE( 6,185) 
  908.   121 IF( IFRQ.EQ.0) TMP1= FMHZ-( NFRQ-1)* DELFRQ
  909.       IF( IFRQ.EQ.1) TMP1= FMHZ/( DELFRQ**( NFRQ-1))
  910.       DO 122  I=1, ITMP1
  911.       ITMP2= I+4*( I-1)
  912.       TMP2= FNORM( ITMP2)/ ZPNORM
  913.       TMP3= FNORM( ITMP2+1)/ ZPNORM
  914.       TMP4= FNORM( ITMP2+2)/ ZPNORM
  915.       TMP5= FNORM( ITMP2+3)
  916.       WRITE( 6,186)  TMP1, FNORM( ITMP2), FNORM( ITMP2+1), FNORM( ITMP2
  917.      &+2), FNORM( ITMP2+3), TMP2, TMP3, TMP4, TMP5
  918.       IF( IFRQ.EQ.0) TMP1= TMP1+ DELFRQ
  919.       IF( IFRQ.EQ.1) TMP1= TMP1* DELFRQ
  920.   122 CONTINUE
  921.       WRITE( 6,135) 
  922.   123 CONTINUE
  923.       NFRQ=1
  924.       MHZ=1
  925.       GOTO 14
  926.   125 FORMAT(A2,19A4)
  927.   126 FORMAT('1')
  928.   127 FORMAT(///,33X,'************************************',//,36X,
  929.      &'NUMERICAL ELECTROMAGNETICS CODE',//,33X,
  930.      &'************************************')
  931.   128 FORMAT(////,37X,'- - - - COMMENTS - - - -',//)
  932.   129 FORMAT(25X,20A4)
  933.   130 FORMAT(///,10X,'INCORRECT LABEL FOR A COMMENT CARD')
  934.   135 FORMAT(/////)
  935.   136 FORMAT(A2,I3,3I5,6E10.3)
  936.   137 FORMAT(1X,'***** DATA CARD NO.',I3,3X,A2,1X,I3,3(1X,I5),6(1X,1P,E
  937.      &12.5))
  938.   138 FORMAT(///,10X,'FAULTY DATA CARD LABEL AFTER GEOMETRY SECTION')
  939.   139 FORMAT(///,10X,'NUMBER OF LOADING CARDS EXCEEDS STORAGE ALLOTTED'
  940.      &)
  941.   140 FORMAT(///,10X,'DATA FAULT ON LOADING CARD NO.=',I5,5X,'ITAG S',
  942.      &'TEP1=',I5,'  IS GREATER THAN ITAG STEP2=',I5)
  943.   141 FORMAT(///,10X,'NUMBER OF EXCITATION CARDS EXCEEDS STORAGE ALLO',
  944.      &'TTED')
  945.   142 FORMAT(///,10X,'NUMBER OF NETWORK CARDS EXCEEDS STORAGE ALLOTTED'
  946.      &)
  947.   143 FORMAT(///,10X,'WHEN MULTIPLE FREQUENCIES ARE REQUESTED, ONLY ONE 
  948.      & NEAR FIELD CARD CAN BE USED -',/,10X,'LAST CARD READ IS USED')
  949.   145 FORMAT(////,33X,'- - - - - - FREQUENCY - - - - - -',//,36X,'FR',
  950.      &'EQUENCY=',1P,E11.4,' MHZ',/,36X,'WAVELENGTH=',E11.4,' METERS')
  951.   146 FORMAT(///,30X,' - - - STRUCTURE IMPEDANCE LOADING - - -')
  952.   147 FORMAT(/,35X,'THIS STRUCTURE IS NOT LOADED')
  953.   148 FORMAT(///,34X,'- - - ANTENNA ENVIRONMENT - - -',/)
  954.   149 FORMAT(40X,'MEDIUM UNDER SCREEN -')
  955.   150 FORMAT(40X,'RELATIVE DIELECTRIC CONST.=',F7.3,/,40X,'CONDUCTIV',
  956.      &'ITY=',1P,E10.3,' MHOS/METER',/,40X,
  957.      &'COMPLEX DIELECTRIC CONSTANT=',2E12.5)
  958.   151 FORMAT(42X,'PERFECT GROUND')
  959.   152 FORMAT(44X,'FREE SPACE')
  960.   153 FORMAT(///,32X,'- - - MATRIX TIMING - - -',//,24X,'FILL=',F9.3,
  961.      &' SEC.,  FACTOR=',F9.3,' SEC.')
  962.   154 FORMAT(///,40X,'- - - EXCITATION - - -')
  963.   155 FORMAT(/,4X,'PLANE WAVE',4X,'THETA=',F7.2,' DEG,  PHI=',F7.2,
  964.      &' DEG,  ETA=',F7.2,' DEG,  TYPE -',A6,'=  AXIAL RATIO=',F6.3)
  965.   156 FORMAT(/,31X,'POSITION (METERS)',14X,'ORIENTATION (DEG)=/',28X,
  966.      &'X',12X,'Y',12X,'Z',10X,'ALPHA',5X,'BETA',4X,'DIPOLE MOMENT',//,4
  967.      &X,'CURRENT SOURCE',1X,3(3X,F10.5),1X,2(3X,F7.2),4X,F8.3)
  968.   157 FORMAT(4X,4(I5,1X),1P,6(3X,E11.4),3X,A6,A2)
  969.   158 FORMAT(///,44X,'- - - NETWORK DATA - - -')
  970.   159 FORMAT(/,6X,'- FROM -    - TO -',11X,'TRANSMISSION LINE',15X,
  971.      &'-  -  SHUNT ADMITTANCES (MHOS)  -  -',14X,'LINE',/,6X,
  972.      &'TAG  SEG.','   TAG  SEG.',6X,'IMPEDANCE',6X,'LENGTH',12X,
  973.      &'- END ONE -',17X,'- END TWO -',12X,'TYPE',/,6X,
  974.      &'NO.   NO.   NO.   NO.',9X,'OHM''S',8X,'METERS',9X,'REAL',10X,
  975.      &'IMAG.',9X,'REAL',10X,'IMAG.')
  976.   160 FORMAT(/,6X,'- FROM -',4X,'- TO -',26X,'-  -  ADMITTANCE MATRIX',
  977.      &' ELEMENTS (MHOS)  -  -',/,6X,'TAG  SEG.   TAG  SEG.',13X,'(ON',
  978.      &'E,ONE)',19X,'(ONE,TWO)',19X,'(TWO,TWO)',/,6X,'NO.   NO.   NO.',
  979.      &'   NO.',8X,'REAL',10X,'IMAG.',9X,'REAL',10X,'IMAG.',9X,'REAL',10
  980.      &X,'IMAG.')
  981.   161 FORMAT(///,29X,'- - - CURRENTS AND LOCATION - - -',//,33X,'DIS',
  982.      &'TANCES IN WAVELENGTHS')
  983.   162 FORMAT(//,2X,'SEG.',2X,'TAG',4X,'COORD. OF SEG. CENTER',5X,'SEG.'
  984.      &,12X,'- - - CURRENT (AMPS) - - -',/,2X,'NO.',3X,'NO.',5X,'X',8X,
  985.      &'Y',8X,'Z',6X,'LENGTH',5X,'REAL',8X,'IMAG.',7X,'MAG.',8X,'PHASE')
  986.   163 FORMAT(///,33X,'- - - RECEIVING PATTERN PARAMETERS - - -',/,43X,
  987.      &'ETA=',F7.2,' DEGREES',/,43X,'TYPE -',A6,/,43X,'AXIAL RATIO=',F6.
  988.      &3,//,11X,'THETA',6X,'PHI',10X,'-  CURRENT  -',9X,'SEG',/,11X,
  989.      &'(DEG)',5X,'(DEG)',7X,'MAGNITUDE',4X,'PHASE',6X,'NO.',/)
  990.   164 FORMAT(10X,2(F7.2,3X),1X,1P,E11.4,3X,0P,F7.2,4X,I5)
  991.   165 FORMAT(1X,2I5,3F9.4,F9.5,1X,1P,3E12.4,0P,F9.3)
  992.   166 FORMAT(///,40X,'- - - POWER BUDGET - - -',//,43X,'INPUT PO',
  993.      &'WER   =',1P,E11.4,' WATTS',/,43X,'RADIATED POWER=',E11.4,
  994.      &' WATTS',/,43X,'STRUCTURE LOSS=',E11.4,' WATTS',/,43X,
  995.      &'NETWORK LOSS  =',E11.4,' WATTS',/,43X,'EFFICIENCY    =',0P,F7.2,
  996.      &' PERCENT')
  997.   170 FORMAT(40X,'RADIAL WIRE GROUND SCREEN',/,40X,I5,' WIRES',/,40X,
  998.      &'WIRE LENGTH=',F8.2,' METERS',/,40X,'WIRE RADIUS=',1P,E10.3,
  999.      &' METERS')
  1000.   181 FORMAT(///,4X,'RECEIVING PATTERN STORAGE TOO SMALL,ARRAY TRUNCA',
  1001.      &'TED')
  1002.   182 FORMAT(///,32X,'- - - NORMALIZED RECEIVING PATTERN - - -',/,41X,
  1003.      &'NORMALIZATION FACTOR=',1P,E11.4,/,41X,'ETA=',0P,F7.2,' DEGREES',
  1004.      &/,41X,'TYPE -',A6,/,41X,'AXIAL RATIO=',F6.3,/,41X,'SEGMENT NO.=',
  1005.      &I5,//,21X,'THETA',6X,'PHI',9X,'-  PATTERN  -',/,21X,'(DEG)',5X,
  1006.      &'(DEG)',8X,'DB',8X,'MAGNITUDE',/)
  1007.   183 FORMAT(20X,2(F7.2,3X),1X,F7.2,4X,1P,E11.4)
  1008.   184 FORMAT(///,36X,'- - - INPUT IMPEDANCE DATA - - -',/,45X,'SO',
  1009.      &'URCE SEGMENT NO.',I4,/,45X,'NORMALIZATION FACTOR=',1P,E12.5,//,7
  1010.      &X,'FREQ.',13X,'-  -  UNNORMALIZED IMPEDANCE  -  -',21X,'-'
  1011.      &' -  NORMALIZED IMPEDANCE  -  -',/,19X,'RESISTANCE',4X,'REACTA',
  1012.      &'NCE',6X,'MAGNITUDE',4X,'PHASE',7X,'RESISTANCE',4X,'REACTANCE',6X
  1013.      &,'MAGNITUDE',4X,'PHASE',/,8X,'MHZ',11X,'OHMS',10X,'OHMS',11X,
  1014.      &'OHMS',5X,'DEGREES',47X,'DEGREES',/)
  1015.   185 FORMAT(///,4X,'STORAGE FOR IMPEDANCE NORMALIZATION TOO SMALL, A',
  1016.      &'RRAY TRUNCATED')
  1017.   186 FORMAT(3X,F9.3,2X,1P,2(2X,E12.5),3X,E12.5,2X,0P,F7.2,2X,1P,2(2X,E
  1018.      &12.5),3X,E12.5,2X,0P,F7.2)
  1019.   196 FORMAT(////,20X,'APPROXIMATE INTEGRATION EMPLOYED FOR SEGMENT',
  1020.      &'S MORE THAN',F8.3,' WAVELENGTHS APART')
  1021.   197 FORMAT(////,41X,'- - - - SURFACE PATCH CURRENTS - - - -',//,50X,
  1022.      &'DISTANCE IN WAVELENGTHS',/,50X,'CURRENT IN AMPS/METER',//,28X,
  1023.      &'- - SURFACE COMPONENTS - -',19X,'- - - RECTANGULAR COM',
  1024.      &'PONENTS - - -',/,6X,'PATCH CENTER',6X,'TANGENT VECTOR 1',3X,
  1025.      &'TANGENT VECTOR 2',11X,'X',19X,'Y',19X,'Z',/,5X,'X',6X,'Y',6X,'Z'
  1026.      &,5X,'MAG.',7X,'PHASE',3X,'MAG.',7X,'PHASE',3(4X,'REAL',6X,'IMAG.'
  1027.      &))
  1028.   198 FORMAT(1X,I4,/,1X,3F7.3,2(1P,E11.4,0P,F8.2),1P,6E10.2)
  1029.   201 FORMAT(/,' RUN TIME =',F10.3)
  1030.   315 FORMAT(///,34X,'- - - CHARGE DENSITIES - - -',//,36X,
  1031.      &'DISTANCES IN WAVELENGTHS',///,2X,'SEG.',2X,'TAG',4X,
  1032.      &'COORD. OF SEG. CENTER',5X,'SEG.',10X,
  1033.      &'CHARGE DENSITY (COULOMBS/METER)',/,2X,'NO.',3X,'NO.',5X,'X',8X,
  1034.      &'Y',8X,'Z',6X,'LENGTH',5X,'REAL',8X,'IMAG.',7X,'MAG.',8X,'PHASE')
  1035.      &
  1036.   321 FORMAT(/,20X,'THE EXTENDED THIN WIRE KERNEL WILL BE USED')
  1037.   303 FORMAT(/,' ERROR - ',A2,' CARD IS NOT ALLOWED WITH N.G.F.')
  1038.   327 FORMAT(/,35X,' LOADING ONLY IN N.G.F. SECTION')
  1039.   302 FORMAT(' ERROR - N.G.F. IN USE.  CANNOT WRITE NEW N.G.F.')
  1040.   313 FORMAT(/,' NUMBER OF SEGMENTS IN COUPLING CALCULATION (CP) EXCEE'
  1041.      &,'DS LIMIT')
  1042.   390 FORMAT(' RADIAL WIRE G. S. APPROXIMATION MAY NOT BE USED WITH SO'
  1043.      &,'MMERFELD GROUND OPTION')
  1044.   391 FORMAT(40X,'FINITE GROUND.  REFLECTION COEFFICIENT APPROXIMATION'
  1045.      &)
  1046.   392 FORMAT(40X,'FINITE GROUND.  SOMMERFELD SOLUTION')
  1047.   393 FORMAT(/,' ERROR IN GROUND PARAMETERS -',/,' COMPLEX DIELECTRIC',
  1048.      &' CONSTANT FROM FILE IS',1P,2E12.5,/,32X,'REQUESTED',2E12.5)
  1049.       END
  1050. C ***
  1051. C     DOUBLE PRECISION 6/4/85
  1052. C
  1053.       SUBROUTINE ARC( ITG, NS, RADA, ANG1, ANG2, RAD)
  1054. C ***
  1055. C                                                                       
  1056. C     ARC GENERATES SEGMENT GEOMETRY DATA FOR AN ARC OF NS SEGMENTS     
  1057. C                                                                       
  1058.       IMPLICIT REAL (A-H,O-Z)
  1059.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  1060.       COMMON  /DATA/ LD, N1, N2, N, NP, M1, M2, M, MP, X( NM), Y( NM), 
  1061.      &Z( NM), SI( NM), BI( NM), ALP( NM), BET( NM), ICON1( N2M), ICON2(
  1062.      & N2M), ITAG( N2M), ICONX( NM), WLAM, IPSYM
  1063.       DIMENSION  X2(1), Y2(1), Z2(1)
  1064.       EQUIVALENCE(X2,SI),(Y2,ALP),(Z2,BET)
  1065.       DATA   TA/.01745329252D+0/
  1066.       IST= N+1
  1067.       N= N+ NS
  1068.       NP= N
  1069.       MP= M
  1070.       IPSYM=0
  1071.       IF( NS.LT.1) RETURN
  1072.       IF( ABS( ANG2- ANG1).LT.360.00001D+0) GOTO 1
  1073.       WRITE( 6,3) 
  1074.       STOP
  1075.     1 ANG= ANG1* TA
  1076.       DANG=( ANG2- ANG1)* TA/ NS
  1077.       XS1= RADA* COS( ANG)
  1078.       ZS1= RADA* SIN( ANG)
  1079.       DO 2  I= IST, N
  1080.       ANG= ANG+ DANG
  1081.       XS2= RADA* COS( ANG)
  1082.       ZS2= RADA* SIN( ANG)
  1083.       X( I)= XS1
  1084.       Y( I)=0.
  1085.       Z( I)= ZS1
  1086.       X2( I)= XS2
  1087.       Y2( I)=0.
  1088.       Z2( I)= ZS2
  1089.       XS1= XS2
  1090.       ZS1= ZS2
  1091.       BI( I)= RAD
  1092.     2 ITAG( I)= ITG
  1093. C                                                                       
  1094.       RETURN
  1095.     3 FORMAT(' ERROR -- ARC ANGLE EXCEEDS 360. DEGREES')
  1096.       END
  1097. C ***
  1098. C     DOUBLE PRECISION 6/4/85
  1099. C
  1100.       FUNCTION ATGN2( X, Y)
  1101. C ***
  1102. C                                                                       
  1103. C     ATGN2 IS ARCTANGENT FUNCTION MODIFIED TO RETURN 0. WHEN X=Y=0.    
  1104. C                                                                       
  1105.       IMPLICIT REAL (A-H,O-Z)
  1106.       IF( X) 3,1,3
  1107.     1 IF( Y) 3,2,3
  1108.     2 ATGN2=0.
  1109.       RETURN
  1110.     3 ATGN2= ATAN2( X, Y)
  1111.       RETURN
  1112.       END
  1113. C ***
  1114. C     DOUBLE PRECISION 6/4/85
  1115. C
  1116.       SUBROUTINE BLCKOT( AR, NUNIT, IX1, IX2, NBLKS, NEOF)
  1117. C ***
  1118. C                                                                       
  1119. C     BLCKOT CONTROLS THE READING AND WRITING OF MATRIX BLOCKS ON FILES 
  1120. C     FOR THE OUT-OF-CORE MATRIX SOLUTION.                              
  1121. C                                                                       
  1122.       IMPLICIT REAL (A-H,O-Z)
  1123. C      LOGICAL  ENF
  1124.       COMPLEX  AR
  1125.       DIMENSION  AR(1000)
  1126.       I1=( IX1+1)/2
  1127.       I2=( IX2+1)/2
  1128.     1 WRITE( NUNIT) ( AR( J), J= I1, I2)
  1129.       RETURN
  1130.       ENTRY BLCKIN( AR, NUNIT, IX1, IX2, NBLKS, NEOF)
  1131.       I1=( IX1+1)/2
  1132.       I2=( IX2+1)/2
  1133.       DO 2  I=1, NBLKS
  1134. C     IF (ENF(NUNIT)) GO TO 3                                           
  1135.       READ( NUNIT,END=3) ( AR( J), J= I1, I2)
  1136.     2 CONTINUE
  1137.       RETURN
  1138.     3 WRITE( 6,4)  NUNIT, NBLKS, NEOF
  1139.       IF( NEOF.NE.777) STOP
  1140.       NEOF=0
  1141. C                                                                       
  1142.       RETURN
  1143.     4 FORMAT('  EOF ON UNIT',I3,'  NBLKS= ',I3,'  NEOF= ',I5)
  1144.       END
  1145. C ***
  1146. C     DOUBLE PRECISION 6/4/85
  1147. C
  1148.       SUBROUTINE CABC( CURX)
  1149. C ***
  1150. C                                                                       
  1151. C     CABC COMPUTES COEFFICIENTS OF THE CONSTANT (A), SINE (B), AND     
  1152. C     COSINE (C) TERMS IN THE CURRENT INTERPOLATION FUNCTIONS FOR THE   
  1153. C     CURRENT VECTOR CUR.                                               
  1154. C                                                                       
  1155.       IMPLICIT REAL (A-H,O-Z)
  1156.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  1157.       COMPLEX  CUR, CURX, VQDS, CURD, CCJ, VSANT, VQD, CS1, CS2
  1158.       COMMON  /DATA/ LD, N1, N2, N, NP, M1, M2, M, MP, X( NM), Y( NM), 
  1159.      &Z( NM), SI( NM), BI( NM), ALP( NM), BET( NM), ICON1( N2M), ICON2(
  1160.      & N2M), ITAG( N2M), ICONX( NM), WLAM, IPSYM
  1161.       COMMON  /CRNT/ AIR( NM), AII( NM), BIR( NM), BII( NM), CIR( NM), 
  1162.      &CII( NM), CUR( N3M)
  1163.       COMMON  /SEGJ/ AX(30), BX(30), CX(30), JCO(30), JSNO, ISCON(50), 
  1164.      &NSCON, IPCON(10), NPCON
  1165.       COMMON  /VSORC/ VQD(30), VSANT(30), VQDS(30), IVQD(30), ISANT(30)
  1166.      &, IQDS(30), NVQD, NSANT, NQDS
  1167.       COMMON  /ANGL/ SALP( NM)
  1168.       DIMENSION  T1X(1), T1Y(1), T1Z(1), T2X(1), T2Y(1), T2Z(1)
  1169.       DIMENSION  CURX(1), CCJX(2)
  1170.       EQUIVALENCE(T1X,SI),(T1Y,ALP),(T1Z,BET),(T2X,ICON1),(T2Y,ICON2),(
  1171.      &T2Z,ITAG)
  1172.       EQUIVALENCE(CCJ,CCJX)
  1173.       DATA   TP/6.283185308D+0/, CCJX/0.,-0.01666666667D+0/
  1174.       IF( N.EQ.0) GOTO 6
  1175.       DO 1  I=1, N
  1176.       AIR( I)=0.
  1177.       AII( I)=0.
  1178.       BIR( I)=0.
  1179.       BII( I)=0.
  1180.       CIR( I)=0.
  1181.     1 CII( I)=0.
  1182.       DO 2  I=1, N
  1183.       AR= REAL( CURX( I))
  1184.       AI= AIMAG( CURX( I))
  1185.       CALL TBF( I,1)
  1186.       DO 2  JX=1, JSNO
  1187.       J= JCO( JX)
  1188.       AIR( J)= AIR( J)+ AX( JX)* AR
  1189.       AII( J)= AII( J)+ AX( JX)* AI
  1190.       BIR( J)= BIR( J)+ BX( JX)* AR
  1191.       BII( J)= BII( J)+ BX( JX)* AI
  1192.       CIR( J)= CIR( J)+ CX( JX)* AR
  1193.     2 CII( J)= CII( J)+ CX( JX)* AI
  1194.       IF( NQDS.EQ.0) GOTO 4
  1195.       DO 3  IS=1, NQDS
  1196.       I= IQDS( IS)
  1197.       JX= ICON1( I)
  1198.       ICON1( I)=0
  1199.       CALL TBF( I,0)
  1200.       ICON1( I)= JX
  1201.       SH= SI( I)*.5
  1202.       CURD= CCJ* VQDS( IS)/(( LOG(2.* SH/ BI( I))-1.)*( BX( JSNO)* COS(
  1203.      & TP* SH)+ CX( JSNO)* SIN( TP* SH))* WLAM)
  1204.       AR= REAL( CURD)
  1205.       AI= AIMAG( CURD)
  1206.       DO 3  JX=1, JSNO
  1207.       J= JCO( JX)
  1208.       AIR( J)= AIR( J)+ AX( JX)* AR
  1209.       AII( J)= AII( J)+ AX( JX)* AI
  1210.       BIR( J)= BIR( J)+ BX( JX)* AR
  1211.       BII( J)= BII( J)+ BX( JX)* AI
  1212.       CIR( J)= CIR( J)+ CX( JX)* AR
  1213.     3 CII( J)= CII( J)+ CX( JX)* AI
  1214.     4 DO 5  I=1, N
  1215.     5 CURX( I)= CMPLX( AIR( I)+ CIR( I), AII( I)+ CII( I))
  1216. C     CONVERT SURFACE CURRENTS FROM T1,T2 COMPONENTS TO X,Y,Z COMPONENTS
  1217.     6 IF( M.EQ.0) RETURN
  1218.       K= LD- M
  1219.       JCO1= N+2* M+1
  1220.       JCO2= JCO1+ M
  1221.       DO 7  I=1, M
  1222.       K= K+1
  1223.       JCO1= JCO1-2
  1224.       JCO2= JCO2-3
  1225.       CS1= CURX( JCO1)
  1226.       CS2= CURX( JCO1+1)
  1227.       CURX( JCO2)= CS1* T1X( K)+ CS2* T2X( K)
  1228.       CURX( JCO2+1)= CS1* T1Y( K)+ CS2* T2Y( K)
  1229.     7 CURX( JCO2+2)= CS1* T1Z( K)+ CS2* T2Z( K)
  1230.       RETURN
  1231.       END
  1232. C ***
  1233. C     DOUBLE PRECISION 6/4/85
  1234. C
  1235.       FUNCTION CANG( Z)
  1236. C ***
  1237. C                                                                       
  1238. C     CANG RETURNS THE PHASE ANGLE OF A COMPLEX NUMBER IN DEGREES.      
  1239. C                                                                       
  1240.       IMPLICIT REAL (A-H,O-Z)
  1241.       COMPLEX  Z
  1242.       CANG= ATGN2( AIMAG( Z), REAL( Z))*57.29577951D+0
  1243.       RETURN
  1244.       END
  1245. C ***
  1246. C     DOUBLE PRECISION 6/4/85
  1247. C
  1248.       SUBROUTINE CMNGF( CB, CC, CD, NB, NC, ND, RKHX, IEXKX)
  1249. C ***
  1250.       IMPLICIT REAL (A-H,O-Z)
  1251. C     CMNGF FILLS INTERACTION MATRICIES B, C, AND D FOR N.G.F. SOLUTION 
  1252.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  1253.       COMPLEX  CB, CC, CD, ZARRAY, EXK, EYK, EZK, EXS, EYS, EZS, EXC
  1254.      &, EYC, EZC
  1255.       COMMON  /DATA/ LD, N1, N2, N, NP, M1, M2, M, MP, X( NM), Y( NM), 
  1256.      &Z( NM), SI( NM), BI( NM), ALP( NM), BET( NM), ICON1( N2M), ICON2(
  1257.      & N2M), ITAG( N2M), ICONX( NM), WLAM, IPSYM
  1258.       COMMON  /ZLOAD/ ZARRAY( NM), NLOAD, NLODF
  1259.       COMMON  /SEGJ/ AX(30), BX(30), CX(30), JCO(30), JSNO, ISCON(50), 
  1260.      &NSCON, IPCON(10), NPCON
  1261.       COMMON  /DATAJ/ S, B, XJ, YJ, ZJ, CABJ, SABJ, SALPJ, EXK, EYK, 
  1262.      &EZK, EXS, EYS, EZS, EXC, EYC, EZC, RKH, IEXK, IND1, INDD1, IND2, 
  1263.      &INDD2, IPGND
  1264.       COMMON  /MATPAR/ ICASE, NBLOKS, NPBLK, NLAST, NBLSYM, NPSYM, 
  1265.      &NLSYM, IMAT, ICASX, NBBX, NPBX, NLBX, NBBL, NPBL, NLBL
  1266.       DIMENSION  CB( NB,1), CC( NC,1), CD( ND,1)
  1267.       RKH= RKHX
  1268.       IEXK= IEXKX
  1269.       M1EQ=2* M1
  1270.       M2EQ= M1EQ+1
  1271.       MEQ=2* M
  1272.       NEQP= ND- NPCON*2
  1273.       NEQS= NEQP- NSCON
  1274.       NEQSP= NEQS+ NC
  1275.       NEQN= NC+ N- N1
  1276.       ITX=1
  1277.       IF( NSCON.GT.0) ITX=2
  1278.       IF( ICASX.EQ.1) GOTO 1
  1279.       REWIND 12
  1280.       REWIND 14
  1281.       REWIND 15
  1282.       IF( ICASX.GT.2) GOTO 5
  1283.     1 DO 4  J=1, ND
  1284.       DO 2  I=1, ND
  1285.     2 CD( I, J)=(0.,0.)
  1286.       DO 3  I=1, NB
  1287.       CB( I, J)=(0.,0.)
  1288.     3 CC( I, J)=(0.,0.)
  1289.     4 CONTINUE
  1290.     5 IST= N- N1+1
  1291.       IT= NPBX
  1292. C     LOOP THRU 24 FILLS B.  FOR ICASX=1 OR 2 ALSO FILLS D(WW), D(WS)   
  1293.       ISV=- NPBX
  1294.       DO 24  IBLK=1, NBBX
  1295.       ISV= ISV+ NPBX
  1296.       IF( IBLK.EQ. NBBX) IT= NLBX
  1297.       IF( ICASX.LT.3) GOTO 7
  1298.       DO 6  J=1, ND
  1299.       DO 6  I=1, IT
  1300.     6 CB( I, J)=(0.,0.)
  1301.     7 I1= ISV+1
  1302.       I2= ISV+ IT
  1303.       IN2= I2
  1304.       IF( IN2.GT. N1) IN2= N1
  1305.       IM1= I1- N1
  1306.       IM2= I2- N1
  1307.       IF( IM1.LT.1) IM1=1
  1308.       IMX=1
  1309.       IF( I1.LE. N1) IMX= N1- I1+2
  1310. C     FILL B(WW),B(WS).  FOR ICASX=1,2 FILL D(WW),D(WS)                 
  1311.       IF( N2.GT. N) GOTO 12
  1312.       DO 11  J= N2, N
  1313.       CALL TRIO( J)
  1314.       DO 9  I=1, JSNO
  1315.       JSS= JCO( I)
  1316. C     SET JCO WHEN SOURCE IS NEW BASIS FUNCTION ON NEW SEGMENT          
  1317.       IF( JSS.LT. N2) GOTO 8
  1318.       JCO( I)= JSS- N1
  1319. C     SOURCE IS PORTION OF MODIFIED BASIS FUNCTION ON NEW SEGMENT       
  1320.       GOTO 9
  1321.     8 JCO( I)= NEQS+ ICONX( JSS)
  1322.     9 CONTINUE
  1323.       IF( I1.LE. IN2) CALL CMWW( J, I1, IN2, CB, NB, CB, NB,0)
  1324.       IF( IM1.LE. IM2) CALL CMWS( J, IM1, IM2, CB( IMX,1), NB, CB, NB,0
  1325.      &)
  1326.       IF( ICASX.GT.2) GOTO 11
  1327.       CALL CMWW( J, N2, N, CD, ND, CD, ND,1)
  1328. C     LOADING IN D(WW)                                                  
  1329.       IF( M2.LE. M) CALL CMWS( J, M2EQ, MEQ, CD(1, IST), ND, CD, ND,1)
  1330.       IF( NLOAD.EQ.0) GOTO 11
  1331.       IR= J- N1
  1332.       EXK= ZARRAY( J)
  1333.       DO 10  I=1, JSNO
  1334.       JSS= JCO( I)
  1335.    10 CD( JSS, IR)= CD( JSS, IR)-( AX( I)+ CX( I))* EXK
  1336.    11 CONTINUE
  1337. C     FILL B(WW)PRIME                                                   
  1338.    12 IF( NSCON.EQ.0) GOTO 20
  1339.       DO 19  I=1, NSCON
  1340. C     SOURCES ARE NEW OR MODIFIED BASIS FUNCTIONS ON OLD SEGMENTS WHICH 
  1341. C     CONNECT TO NEW SEGMENTS                                           
  1342.       J= ISCON( I)
  1343.       CALL TRIO( J)
  1344.       JSS=0
  1345.       DO 15  IX=1, JSNO
  1346.       IR= JCO( IX)
  1347.       IF( IR.LT. N2) GOTO 13
  1348.       IR= IR- N1
  1349.       GOTO 14
  1350.    13 IR= ICONX( IR)
  1351.       IF( IR.EQ.0) GOTO 15
  1352.       IR= NEQS+ IR
  1353.    14 JSS= JSS+1
  1354.       JCO( JSS)= IR
  1355.       AX( JSS)= AX( IX)
  1356.       BX( JSS)= BX( IX)
  1357.       CX( JSS)= CX( IX)
  1358.    15 CONTINUE
  1359.       JSNO= JSS
  1360.       IF( I1.LE. IN2) CALL CMWW( J, I1, IN2, CB, NB, CB, NB,0)
  1361. C     SOURCE IS SINGULAR COMPONENT OF PATCH CURRENT THAT IS PART OF     
  1362. C     MODIFIED BASIS FUNCTION FOR OLD SEGMENT THAT CONNECTS TO A NEW    
  1363. C     SEGMENT ON END OPPOSITE PATCH.                                    
  1364.       IF( IM1.LE. IM2) CALL CMWS( J, IM1, IM2, CB( IMX,1), NB, CB, NB,0
  1365.      &)
  1366.       IF( I1.LE. IN2) CALL CMSW( J, I, I1, IN2, CB, CB,0, NB,-1)
  1367.       IF( NLODF.EQ.0) GOTO 17
  1368.       JX= J- ISV
  1369.       IF( JX.LT.1.OR. JX.GT. IT) GOTO 17
  1370.       EXK= ZARRAY( J)
  1371.       DO 16  IX=1, JSNO
  1372.       JSS= JCO( IX)
  1373. C     SOURCES ARE PORTIONS OF MODIFIED BASIS FUNCTION J ON OLD SEGMENTS 
  1374. C     EXCLUDING OLD SEGMENTS THAT DIRECTLY CONNECT TO NEW SEGMENTS.     
  1375.    16 CB( JX, JSS)= CB( JX, JSS)-( AX( IX)+ CX( IX))* EXK
  1376.    17 CALL TBF( J,1)
  1377.       JSX= JSNO
  1378.       JSNO=1
  1379.       IR= JCO(1)
  1380.       JCO(1)= NEQS+ I
  1381.       DO 19  IX=1, JSX
  1382.       IF( IX.EQ.1) GOTO 18
  1383.       IR= JCO( IX)
  1384.       AX(1)= AX( IX)
  1385.       BX(1)= BX( IX)
  1386.       CX(1)= CX( IX)
  1387.    18 IF( IR.GT. N1) GOTO 19
  1388.       IF( ICONX( IR).NE.0) GOTO 19
  1389.       IF( I1.LE. IN2) CALL CMWW( IR, I1, IN2, CB, NB, CB, NB,0)
  1390. C     LOADING FOR B(WW)PRIME                                            
  1391.       IF( IM1.LE. IM2) CALL CMWS( IR, IM1, IM2, CB( IMX,1), NB, CB, NB,
  1392.      &0)
  1393.       IF( NLODF.EQ.0) GOTO 19
  1394.       JX= IR- ISV
  1395.       IF( JX.LT.1.OR. JX.GT. IT) GOTO 19
  1396.       EXK= ZARRAY( IR)
  1397.       JSS= JCO(1)
  1398.       CB( JX, JSS)= CB( JX, JSS)-( AX(1)+ CX(1))* EXK
  1399.    19 CONTINUE
  1400.    20 IF( NPCON.EQ.0) GOTO 22
  1401. C     FILL B(SS)PRIME TO SET OLD PATCH BASIS FUNCTIONS TO ZERO FOR      
  1402. C     PATCHES THAT CONNECT TO NEW SEGMENTS                              
  1403.       JSS= NEQP
  1404.       DO 21  I=1, NPCON
  1405.       IX= IPCON( I)*2+ N1- ISV
  1406.       IR= IX-1
  1407.       JSS= JSS+1
  1408.       IF( IR.GT.0.AND. IR.LE. IT) CB( IR, JSS)=(1.,0.)
  1409.       JSS= JSS+1
  1410.       IF( IX.GT.0.AND. IX.LE. IT) CB( IX, JSS)=(1.,0.)
  1411.    21 CONTINUE
  1412. C     FILL B(SW) AND B(SS)                                              
  1413.    22 IF( M2.GT. M) GOTO 23
  1414.       IF( I1.LE. IN2) CALL CMSW( M2, M, I1, IN2, CB(1, IST), CB, N1, NB
  1415.      &,0)
  1416.       IF( IM1.LE. IM2) CALL CMSS( M2, M, IM1, IM2, CB( IMX, IST), NB,0)
  1417.      &
  1418.    23 IF( ICASX.EQ.1) GOTO 24
  1419.       WRITE( 14) (( CB( I, J), I=1, IT), J=1, ND)
  1420. C     FILLING B COMPLETE.  START ON C AND D                             
  1421.    24 CONTINUE
  1422.       IT= NPBL
  1423.       ISV=- NPBL
  1424.       DO 43  IBLK=1, NBBL
  1425.       ISV= ISV+ NPBL
  1426.       ISVV= ISV+ NC
  1427.       IF( IBLK.EQ. NBBL) IT= NLBL
  1428.       IF( ICASX.LT.3) GOTO 27
  1429.       DO 26  J=1, IT
  1430.       DO 25  I=1, NC
  1431.    25 CC( I, J)=(0.,0.)
  1432.       DO 26  I=1, ND
  1433.    26 CD( I, J)=(0.,0.)
  1434.    27 I1= ISVV+1
  1435.       I2= ISVV+ IT
  1436.       IN1= I1- M1EQ
  1437.       IN2= I2- M1EQ
  1438.       IF( IN2.GT. N) IN2= N
  1439.       IM1= I1- N
  1440.       IM2= I2- N
  1441.       IF( IM1.LT. M2EQ) IM1= M2EQ
  1442.       IF( IM2.GT. MEQ) IM2= MEQ
  1443.       IMX=1
  1444.       IF( IN1.LE. IN2) IMX= NEQN- I1+2
  1445.       IF( ICASX.LT.3) GOTO 32
  1446. C     SAME AS DO 24 LOOP TO FILL D(WW) FOR ICASX GREATER THAN 2         
  1447.       IF( N2.GT. N) GOTO 32
  1448.       DO 31  J= N2, N
  1449.       CALL TRIO( J)
  1450.       DO 29  I=1, JSNO
  1451.       JSS= JCO( I)
  1452.       IF( JSS.LT. N2) GOTO 28
  1453.       JCO( I)= JSS- N1
  1454.       GOTO 29
  1455.    28 JCO( I)= NEQS+ ICONX( JSS)
  1456.    29 CONTINUE
  1457.       IF( IN1.LE. IN2) CALL CMWW( J, IN1, IN2, CD, ND, CD, ND,1)
  1458.       IF( IM1.LE. IM2) CALL CMWS( J, IM1, IM2, CD(1, IMX), ND, CD, ND,1
  1459.      &)
  1460.       IF( NLOAD.EQ.0) GOTO 31
  1461.       IR= J- N1- ISV
  1462.       IF( IR.LT.1.OR. IR.GT. IT) GOTO 31
  1463.       EXK= ZARRAY( J)
  1464.       DO 30  I=1, JSNO
  1465.       JSS= JCO( I)
  1466.    30 CD( JSS, IR)= CD( JSS, IR)-( AX( I)+ CX( I))* EXK
  1467.    31 CONTINUE
  1468. C     FILL D(SW) AND D(SS)                                              
  1469.    32 IF( M2.GT. M) GOTO 33
  1470.       IF( IN1.LE. IN2) CALL CMSW( M2, M, IN1, IN2, CD( IST,1), CD, N1, 
  1471.      &ND,1)
  1472.       IF( IM1.LE. IM2) CALL CMSS( M2, M, IM1, IM2, CD( IST, IMX), ND,1)
  1473.      &
  1474. C     FILL C(WW),C(WS), D(WW)PRIME, AND D(WS)PRIME.                     
  1475.    33 IF( N1.LT.1) GOTO 39
  1476.       DO 37  J=1, N1
  1477.       CALL TRIO( J)
  1478.       IF( NSCON.EQ.0) GOTO 36
  1479.       DO 35  IX=1, JSNO
  1480.       JSS= JCO( IX)
  1481.       IF( JSS.LT. N2) GOTO 34
  1482.       JCO( IX)= JSS+ M1EQ
  1483.       GOTO 35
  1484.    34 IR= ICONX( JSS)
  1485.       IF( IR.NE.0) JCO( IX)= NEQSP+ IR
  1486.    35 CONTINUE
  1487.    36 IF( IN1.LE. IN2) CALL CMWW( J, IN1, IN2, CC, NC, CD, ND, ITX)
  1488.       IF( IM1.LE. IM2) CALL CMWS( J, IM1, IM2, CC(1, IMX), NC, CD(1, 
  1489.      &IMX), ND, ITX)
  1490.    37 CONTINUE
  1491. C     FILL C(WW)PRIME                                                   
  1492.       IF( NSCON.EQ.0) GOTO 39
  1493.       DO 38  IX=1, NSCON
  1494.       IR= ISCON( IX)
  1495.       JSS= NEQS+ IX- ISV
  1496.       IF( JSS.GT.0.AND. JSS.LE. IT) CC( IR, JSS)=(1.,0.)
  1497.    38 CONTINUE
  1498.    39 IF( NPCON.EQ.0) GOTO 41
  1499. C     FILL C(SS)PRIME                                                   
  1500.       JSS= NEQP- ISV
  1501.       DO 40  I=1, NPCON
  1502.       IX= IPCON( I)*2+ N1
  1503.       IR= IX-1
  1504.       JSS= JSS+1
  1505.       IF( JSS.GT.0.AND. JSS.LE. IT) CC( IR, JSS)=(1.,0.)
  1506.       JSS= JSS+1
  1507.       IF( JSS.GT.0.AND. JSS.LE. IT) CC( IX, JSS)=(1.,0.)
  1508.    40 CONTINUE
  1509. C     FILL C(SW) AND C(SS)                                              
  1510.    41 IF( M1.LT.1) GOTO 42
  1511.       IF( IN1.LE. IN2) CALL CMSW(1, M1, IN1, IN2, CC( N2,1), CC,0, NC,1
  1512.      &)
  1513.       IF( IM1.LE. IM2) CALL CMSS(1, M1, IM1, IM2, CC( N2, IMX), NC,1)
  1514.    42 CONTINUE
  1515.       IF( ICASX.EQ.1) GOTO 43
  1516.       WRITE( 12) (( CD( J, I), J=1, ND), I=1, IT)
  1517.       WRITE( 15) (( CC( J, I), J=1, NC), I=1, IT)
  1518.    43 CONTINUE
  1519.       IF( ICASX.EQ.1) RETURN
  1520.       REWIND 12
  1521.       REWIND 14
  1522.       REWIND 15
  1523.       RETURN
  1524.       END
  1525. C ***
  1526. C     DOUBLE PRECISION 6/4/85
  1527. C
  1528.       SUBROUTINE CMSET( NROW, CM, RKHX, IEXKX)
  1529. C ***
  1530.       IMPLICIT REAL (A-H,O-Z)
  1531. C                                                                       
  1532. C     CMSET SETS UP THE COMPLEX STRUCTURE MATRIX IN THE ARRAY CM        
  1533. C                                                                       
  1534.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  1535.       COMPLEX  CM, ZARRAY, ZAJ, ETK, ETS, ETC, EXK, EYK, EZK, EXS, 
  1536.      &EYS, EZS, EXC, EYC, EZC, SSX, D, DETER
  1537.       COMMON  /DATA/ LD, N1, N2, N, NP, M1, M2, M, MP, X( NM), Y( NM), 
  1538.      &Z( NM), SI( NM), BI( NM), ALP( NM), BET( NM), ICON1( N2M), ICON2(
  1539.      & N2M), ITAG( N2M), ICONX( NM), WLAM, IPSYM
  1540.       COMMON  /MATPAR/ ICASE, NBLOKS, NPBLK, NLAST, NBLSYM, NPSYM, 
  1541.      &NLSYM, IMAT, ICASX, NBBX, NPBX, NLBX, NBBL, NPBL, NLBL
  1542.       COMMON  /SMAT/ SSX(16,16)
  1543.       COMMON  /SCRATM/ D( N2M)
  1544.       COMMON  /ZLOAD/ ZARRAY( NM), NLOAD, NLODF
  1545.       COMMON  /SEGJ/ AX(30), BX(30), CX(30), JCO(30), JSNO, ISCON(50), 
  1546.      &NSCON, IPCON(10), NPCON
  1547.       COMMON  /DATAJ/ S, B, XJ, YJ, ZJ, CABJ, SABJ, SALPJ, EXK, EYK, 
  1548.      &EZK, EXS, EYS, EZS, EXC, EYC, EZC, RKH, IEXK, IND1, INDD1, IND2, 
  1549.      &INDD2, IPGND
  1550.       DIMENSION  CM( NROW,1)
  1551.       MP2=2* MP
  1552.       NPEQ= NP+ MP2
  1553.       NEQ= N+2* M
  1554.       NOP= NEQ/ NPEQ
  1555.       IF( ICASE.GT.2) REWIND 11
  1556.       RKH= RKHX
  1557.       IEXK= IEXKX
  1558.       IOUT=2* NPBLK* NROW
  1559. C                                                                       
  1560. C     CYCLE OVER MATRIX BLOCKS                                          
  1561. C                                                                       
  1562.       IT= NPBLK
  1563.       DO 13  IXBLK1=1, NBLOKS
  1564.       ISV=( IXBLK1-1)* NPBLK
  1565.       IF( IXBLK1.EQ. NBLOKS) IT= NLAST
  1566.       DO 1  I=1, NROW
  1567.       DO 1  J=1, IT
  1568.     1 CM( I, J)=(0.,0.)
  1569.       I1= ISV+1
  1570.       I2= ISV+ IT
  1571.       IN2= I2
  1572.       IF( IN2.GT. NP) IN2= NP
  1573.       IM1= I1- NP
  1574.       IM2= I2- NP
  1575.       IF( IM1.LT.1) IM1=1
  1576.       IST=1
  1577.       IF( I1.LE. NP) IST= NP- I1+2
  1578. C                                                                       
  1579. C     WIRE SOURCE LOOP                                                  
  1580. C                                                                       
  1581.       IF( N.EQ.0) GOTO 5
  1582.       DO 4  J=1, N
  1583.       CALL TRIO( J)
  1584.       DO 2  I=1, JSNO
  1585.       IJ= JCO( I)
  1586.     2 JCO( I)=(( IJ-1)/ NP)* MP2+ IJ
  1587.       IF( I1.LE. IN2) CALL CMWW( J, I1, IN2, CM, NROW, CM, NROW,1)
  1588.       IF( IM1.LE. IM2) CALL CMWS( J, IM1, IM2, CM(1, IST), NROW, CM, 
  1589.      &NROW,1)
  1590. C                                                                       
  1591. C     MATRIX ELEMENTS MODIFIED BY LOADING                               
  1592. C                                                                       
  1593.       IF( NLOAD.EQ.0) GOTO 4
  1594.       IF( J.GT. NP) GOTO 4
  1595.       IPR= J- ISV
  1596.       IF( IPR.LT.1.OR. IPR.GT. IT) GOTO 4
  1597.       ZAJ= ZARRAY( J)
  1598.       DO 3  I=1, JSNO
  1599.       JSS= JCO( I)
  1600.     3 CM( JSS, IPR)= CM( JSS, IPR)-( AX( I)+ CX( I))* ZAJ
  1601.     4 CONTINUE
  1602. C     MATRIX ELEMENTS FOR PATCH CURRENT SOURCES                         
  1603.     5 IF( M.EQ.0) GOTO 7
  1604.       JM1=1- MP
  1605.       JM2=0
  1606.       JST=1- MP2
  1607.       DO 6  I=1, NOP
  1608.       JM1= JM1+ MP
  1609.       JM2= JM2+ MP
  1610.       JST= JST+ NPEQ
  1611.       IF( I1.LE. IN2) CALL CMSW( JM1, JM2, I1, IN2, CM( JST,1), CM,0, 
  1612.      &NROW,1)
  1613.       IF( IM1.LE. IM2) CALL CMSS( JM1, JM2, IM1, IM2, CM( JST, IST), 
  1614.      &NROW,1)
  1615.     6 CONTINUE
  1616.     7 IF( ICASE.EQ.1) GOTO 13
  1617. C     COMBINE ELEMENTS FOR SYMMETRY MODES                               
  1618.       IF( ICASE.EQ.3) GOTO 12
  1619.       DO 11  I=1, IT
  1620.       DO 11  J=1, NPEQ
  1621.       DO 8  K=1, NOP
  1622.       KA= J+( K-1)* NPEQ
  1623.     8 D( K)= CM( KA, I)
  1624.       DETER= D(1)
  1625.       DO 9  KK=2, NOP
  1626.     9 DETER= DETER+ D( KK)
  1627.       CM( J, I)= DETER
  1628.       DO 11  K=2, NOP
  1629.       KA= J+( K-1)* NPEQ
  1630.       DETER= D(1)
  1631.       DO 10  KK=2, NOP
  1632.    10 DETER= DETER+ D( KK)* SSX( K, KK)
  1633.       CM( KA, I)= DETER
  1634.    11 CONTINUE
  1635. C     WRITE BLOCK FOR OUT-OF-CORE CASES.                                
  1636.       IF( ICASE.LT.3) GOTO 13
  1637.    12 CALL BLCKOT( CM,11,1, IOUT,1,31)
  1638.    13 CONTINUE
  1639.       IF( ICASE.GT.2) REWIND 11
  1640.       RETURN
  1641.       END
  1642. C ***
  1643. C     DOUBLE PRECISION 6/4/85
  1644. C
  1645.       SUBROUTINE CMSS( J1, J2, IM1, IM2, CM, NROW, ITRP)
  1646. C ***
  1647.       IMPLICIT REAL (A-H,O-Z)
  1648. C     CMSS COMPUTES MATRIX ELEMENTS FOR SURFACE-SURFACE INTERACTIONS.   
  1649.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  1650.       COMPLEX  G11, G12, G21, G22, CM, EXK, EYK, EZK, EXS, EYS, EZS,
  1651.      & EXC, EYC, EZC
  1652.       COMMON  /DATA/ LD, N1, N2, N, NP, M1, M2, M, MP, X( NM), Y( NM), 
  1653.      &Z( NM), SI( NM), BI( NM), ALP( NM), BET( NM), ICON1( N2M), ICON2(
  1654.      & N2M), ITAG( N2M), ICONX( NM), WLAM, IPSYM
  1655.       COMMON  /ANGL/ SALP( NM)
  1656.       COMMON  /DATAJ/ S, B, XJ, YJ, ZJ, CABJ, SABJ, SALPJ, EXK, EYK, 
  1657.      &EZK, EXS, EYS, EZS, EXC, EYC, EZC, RKH, IEXK, IND1, INDD1, IND2, 
  1658.      &INDD2, IPGND
  1659.       DIMENSION  CM( NROW,1)
  1660.       DIMENSION  T1X(1), T1Y(1), T1Z(1), T2X(1), T2Y(1), T2Z(1)
  1661.       EQUIVALENCE(T1X,SI),(T1Y,ALP),(T1Z,BET),(T2X,ICON1),(T2Y,ICON2),(
  1662.      &T2Z,ITAG)
  1663.       EQUIVALENCE(T1XJ,CABJ),(T1YJ,SABJ),(T1ZJ,SALPJ),(T2XJ,B),(T2YJ,
  1664.      &IND1),(T2ZJ,IND2)
  1665.       LDP= LD+1
  1666.       I1=( IM1+1)/2
  1667.       I2=( IM2+1)/2
  1668.       ICOMP= I1*2-3
  1669.       II1=-1
  1670. C     LOOP OVER OBSERVATION PATCHES                                     
  1671.       IF( ICOMP+2.LT. IM1) II1=-2
  1672.       DO 5  I= I1, I2
  1673.       IL= LDP- I
  1674.       ICOMP= ICOMP+2
  1675.       II1= II1+2
  1676.       II2= II1+1
  1677.       T1XI= T1X( IL)* SALP( IL)
  1678.       T1YI= T1Y( IL)* SALP( IL)
  1679.       T1ZI= T1Z( IL)* SALP( IL)
  1680.       T2XI= T2X( IL)* SALP( IL)
  1681.       T2YI= T2Y( IL)* SALP( IL)
  1682.       T2ZI= T2Z( IL)* SALP( IL)
  1683.       XI= X( IL)
  1684.       YI= Y( IL)
  1685.       ZI= Z( IL)
  1686. C     LOOP OVER SOURCE PATCHES                                          
  1687.       JJ1=-1
  1688.       DO 5  J= J1, J2
  1689.       JL= LDP- J
  1690.       JJ1= JJ1+2
  1691.       JJ2= JJ1+1
  1692.       S= BI( JL)
  1693.       XJ= X( JL)
  1694.       YJ= Y( JL)
  1695.       ZJ= Z( JL)
  1696.       T1XJ= T1X( JL)
  1697.       T1YJ= T1Y( JL)
  1698.       T1ZJ= T1Z( JL)
  1699.       T2XJ= T2X( JL)
  1700.       T2YJ= T2Y( JL)
  1701.       T2ZJ= T2Z( JL)
  1702.       CALL HINTG( XI, YI, ZI)
  1703.       G11=-( T2XI* EXK+ T2YI* EYK+ T2ZI* EZK)
  1704.       G12=-( T2XI* EXS+ T2YI* EYS+ T2ZI* EZS)
  1705.       G21=-( T1XI* EXK+ T1YI* EYK+ T1ZI* EZK)
  1706.       G22=-( T1XI* EXS+ T1YI* EYS+ T1ZI* EZS)
  1707.       IF( I.NE. J) GOTO 1
  1708.       G11= G11-.5
  1709.       G22= G22+.5
  1710. C     NORMAL FILL                                                       
  1711.     1 IF( ITRP.NE.0) GOTO 3
  1712.       IF( ICOMP.LT. IM1) GOTO 2
  1713.       CM( II1, JJ1)= G11
  1714.       CM( II1, JJ2)= G12
  1715.     2 IF( ICOMP.GE. IM2) GOTO 5
  1716.       CM( II2, JJ1)= G21
  1717.       CM( II2, JJ2)= G22
  1718. C     TRANSPOSED FILL                                                   
  1719.       GOTO 5
  1720.     3 IF( ICOMP.LT. IM1) GOTO 4
  1721.       CM( JJ1, II1)= G11
  1722.       CM( JJ2, II1)= G12
  1723.     4 IF( ICOMP.GE. IM2) GOTO 5
  1724.       CM( JJ1, II2)= G21
  1725.       CM( JJ2, II2)= G22
  1726.     5 CONTINUE
  1727.       RETURN
  1728.       END
  1729. C ***
  1730. C     DOUBLE PRECISION 6/4/85
  1731. C
  1732.       SUBROUTINE CMSW( J1, J2, I1, I2, CM, CW, NCW, NROW, ITRP)
  1733. C ***
  1734.       IMPLICIT REAL (A-H,O-Z)
  1735. C     COMPUTES MATRIX ELEMENTS FOR E ALONG WIRES DUE TO PATCH CURRENT   
  1736.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  1737.       COMPLEX  CM, ZRATI, ZRATI2, T1, EXK, EYK, EZK, EXS, EYS, EZS, 
  1738.      &EXC, EYC, EZC, EMEL, CW, FRATI
  1739.       COMMON  /DATA/ LD, N1, N2, N, NP, M1, M2, M, MP, X( NM), Y( NM), 
  1740.      &Z( NM), SI( NM), BI( NM), ALP( NM), BET( NM), ICON1( N2M), ICON2(
  1741.      & N2M), ITAG( N2M), ICONX( NM), WLAM, IPSYM
  1742.       COMMON  /ANGL/ SALP( NM)
  1743.       COMMON  /GND/ ZRATI, ZRATI2, FRATI, CL, CH, SCRWL, SCRWR, NRADL, 
  1744.      &KSYMP, IFAR, IPERF, T1, T2
  1745.       COMMON  /DATAJ/ S, B, XJ, YJ, ZJ, CABJ, SABJ, SALPJ, EXK, EYK, 
  1746.      &EZK, EXS, EYS, EZS, EXC, EYC, EZC, RKH, IEXK, IND1, INDD1, IND2, 
  1747.      &INDD2, IPGND
  1748.       COMMON  /SEGJ/ AX(30), BX(30), CX(30), JCO(30), JSNO, ISCON(50), 
  1749.      &NSCON, IPCON(10), NPCON
  1750.       DIMENSION  CAB(1), SAB(1), CM( NROW,1), CW( NROW,1)
  1751.       DIMENSION  T1X(1), T1Y(1), T1Z(1), T2X(1), T2Y(1), T2Z(1), EMEL(9
  1752.      &)
  1753.       EQUIVALENCE(T1X,SI),(T1Y,ALP),(T1Z,BET),(T2X,ICON1),(T2Y,ICON2),(
  1754.      &T2Z,ITAG),(CAB,ALP),(SAB,BET)
  1755.       EQUIVALENCE(T1XJ,CABJ),(T1YJ,SABJ),(T1ZJ,SALPJ),(T2XJ,B),(T2YJ,
  1756.      &IND1),(T2ZJ,IND2)
  1757.       DATA   PI/3.141592654D+0/
  1758.       LDP= LD+1
  1759.       NEQS= N- N1+2*( M- M1)
  1760.       IF( ITRP.LT.0) GOTO 13
  1761.       K=0
  1762. C     OBSERVATION LOOP                                                  
  1763.       ICGO=1
  1764.       DO 12  I= I1, I2
  1765.       K= K+1
  1766.       XI= X( I)
  1767.       YI= Y( I)
  1768.       ZI= Z( I)
  1769.       CABI= CAB( I)
  1770.       SABI= SAB( I)
  1771.       SALPI= SALP( I)
  1772.       IPCH=0
  1773.       IF( ICON1( I).LT.10000) GOTO 1
  1774.       IPCH= ICON1( I)-10000
  1775.       FSIGN=-1.
  1776.     1 IF( ICON2( I).LT.10000) GOTO 2
  1777.       IPCH= ICON2( I)-10000
  1778.       FSIGN=1.
  1779. C     SOURCE LOOP                                                       
  1780.     2 JL=0
  1781.       DO 12  J= J1, J2
  1782.       JS= LDP- J
  1783.       JL= JL+2
  1784.       T1XJ= T1X( JS)
  1785.       T1YJ= T1Y( JS)
  1786.       T1ZJ= T1Z( JS)
  1787.       T2XJ= T2X( JS)
  1788.       T2YJ= T2Y( JS)
  1789.       T2ZJ= T2Z( JS)
  1790.       XJ= X( JS)
  1791.       YJ= Y( JS)
  1792.       ZJ= Z( JS)
  1793. C     GROUND LOOP                                                       
  1794.       S= BI( JS)
  1795.       DO 12  IP=1, KSYMP
  1796.       IPGND= IP
  1797.       IF( IPCH.NE. J.AND. ICGO.EQ.1) GOTO 9
  1798.       IF( IP.EQ.2) GOTO 9
  1799.       IF( ICGO.GT.1) GOTO 6
  1800.       CALL PCINT( XI, YI, ZI, CABI, SABI, SALPI, EMEL)
  1801.       PY= PI* SI( I)* FSIGN
  1802.       PX= SIN( PY)
  1803.       PY= COS( PY)
  1804.       EXC= EMEL(9)* FSIGN
  1805.       CALL TRIO( I)
  1806.       IF( I.GT. N1) GOTO 3
  1807.       IL= NEQS+ ICONX( I)
  1808.       GOTO 4
  1809.     3 IL= I- NCW
  1810.       IF( I.LE. NP) IL=(( IL-1)/ NP)*2* MP+ IL
  1811.     4 IF( ITRP.NE.0) GOTO 5
  1812.       CW( K, IL)= CW( K, IL)+ EXC*( AX( JSNO)+ BX( JSNO)* PX+ CX( JSNO)
  1813.      &* PY)
  1814.       GOTO 6
  1815.     5 CW( IL, K)= CW( IL, K)+ EXC*( AX( JSNO)+ BX( JSNO)* PX+ CX( JSNO)
  1816.      &* PY)
  1817.     6 IF( ITRP.NE.0) GOTO 7
  1818.       CM( K, JL-1)= EMEL( ICGO)
  1819.       CM( K, JL)= EMEL( ICGO+4)
  1820.       GOTO 8
  1821.     7 CM( JL-1, K)= EMEL( ICGO)
  1822.       CM( JL, K)= EMEL( ICGO+4)
  1823.     8 ICGO= ICGO+1
  1824.       IF( ICGO.EQ.5) ICGO=1
  1825.       GOTO 11
  1826.     9 CALL UNERE( XI, YI, ZI)
  1827. C     NORMAL FILL                                                       
  1828.       IF( ITRP.NE.0) GOTO 10
  1829.       CM( K, JL-1)= CM( K, JL-1)+ EXK* CABI+ EYK* SABI+ EZK* SALPI
  1830.       CM( K, JL)= CM( K, JL)+ EXS* CABI+ EYS* SABI+ EZS* SALPI
  1831. C     TRANSPOSED FILL                                                   
  1832.       GOTO 11
  1833.    10 CM( JL-1, K)= CM( JL-1, K)+ EXK* CABI+ EYK* SABI+ EZK* SALPI
  1834.       CM( JL, K)= CM( JL, K)+ EXS* CABI+ EYS* SABI+ EZS* SALPI
  1835.    11 CONTINUE
  1836.    12 CONTINUE
  1837. C     FOR OLD SEG. CONNECTING TO OLD PATCH ON ONE END AND NEW SEG. ON   
  1838. C     OTHER END INTEGRATE SINGULAR COMPONENT (9) OF SURFACE CURRENT ONLY
  1839.       RETURN
  1840.    13 IF( J1.LT. I1.OR. J1.GT. I2) GOTO 16
  1841.       IPCH= ICON1( J1)
  1842.       IF( IPCH.LT.10000) GOTO 14
  1843.       IPCH= IPCH-10000
  1844.       FSIGN=-1.
  1845.       GOTO 15
  1846.    14 IPCH= ICON2( J1)
  1847.       IF( IPCH.LT.10000) GOTO 16
  1848.       IPCH= IPCH-10000
  1849.       FSIGN=1.
  1850.    15 IF( IPCH.GT. M1) GOTO 16
  1851.       JS= LDP- IPCH
  1852.       IPGND=1
  1853.       T1XJ= T1X( JS)
  1854.       T1YJ= T1Y( JS)
  1855.       T1ZJ= T1Z( JS)
  1856.       T2XJ= T2X( JS)
  1857.       T2YJ= T2Y( JS)
  1858.       T2ZJ= T2Z( JS)
  1859.       XJ= X( JS)
  1860.       YJ= Y( JS)
  1861.       ZJ= Z( JS)
  1862.       S= BI( JS)
  1863.       XI= X( J1)
  1864.       YI= Y( J1)
  1865.       ZI= Z( J1)
  1866.       CABI= CAB( J1)
  1867.       SABI= SAB( J1)
  1868.       SALPI= SALP( J1)
  1869.       CALL PCINT( XI, YI, ZI, CABI, SABI, SALPI, EMEL)
  1870.       PY= PI* SI( J1)* FSIGN
  1871.       PX= SIN( PY)
  1872.       PY= COS( PY)
  1873.       EXC= EMEL(9)* FSIGN
  1874.       IL= JCO( JSNO)
  1875.       K= J1- I1+1
  1876.       CW( K, IL)= CW( K, IL)+ EXC*( AX( JSNO)+ BX( JSNO)* PX+ CX( JSNO)
  1877.      &* PY)
  1878.    16 RETURN
  1879.       END
  1880. C ***
  1881. C     DOUBLE PRECISION 6/4/85
  1882. C
  1883.       SUBROUTINE CMWS( J, I1, I2, CM, NR, CW, NW, ITRP)
  1884. C ***
  1885. C                                                                       
  1886. C     CMWS COMPUTES MATRIX ELEMENTS FOR WIRE-SURFACE INTERACTIONS       
  1887. C                                                                       
  1888.       IMPLICIT REAL (A-H,O-Z)
  1889.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  1890.       COMPLEX  CM, CW, ETK, ETS, ETC, EXK, EYK, EZK, EXS, EYS, EZS, 
  1891.      &EXC, EYC, EZC
  1892.       COMMON  /DATA/ LD, N1, N2, N, NP, M1, M2, M, MP, X( NM), Y( NM), 
  1893.      &Z( NM), SI( NM), BI( NM), ALP( NM), BET( NM), ICON1( N2M), ICON2(
  1894.      & N2M), ITAG( N2M), ICONX( NM), WLAM, IPSYM
  1895.       COMMON  /ANGL/ SALP( NM)
  1896.       COMMON  /SEGJ/ AX(30), BX(30), CX(30), JCO(30), JSNO, ISCON(50), 
  1897.      &NSCON, IPCON(10), NPCON
  1898.       COMMON  /DATAJ/ S, B, XJ, YJ, ZJ, CABJ, SABJ, SALPJ, EXK, EYK, 
  1899.      &EZK, EXS, EYS, EZS, EXC, EYC, EZC, RKH, IEXK, IND1, INDD1, IND2, 
  1900.      &INDD2, IPGND
  1901.       DIMENSION  CM( NR,1), CW( NW,1), CAB(1), SAB(1)
  1902.       DIMENSION  T1X(1), T1Y(1), T1Z(1), T2X(1), T2Y(1), T2Z(1)
  1903.       EQUIVALENCE(CAB,ALP),(SAB,BET),(T1X,SI),(T1Y,ALP),(T1Z,BET)
  1904.       EQUIVALENCE(T2X,ICON1),(T2Y,ICON2),(T2Z,ITAG)
  1905.       LDP= LD+1
  1906.       S= SI( J)
  1907.       B= BI( J)
  1908.       XJ= X( J)
  1909.       YJ= Y( J)
  1910.       ZJ= Z( J)
  1911.       CABJ= CAB( J)
  1912.       SABJ= SAB( J)
  1913. C                                                                       
  1914. C     OBSERVATION LOOP                                                  
  1915. C                                                                       
  1916.       SALPJ= SALP( J)
  1917.       IPR=0
  1918.       DO 9  I= I1, I2
  1919.       IPR= IPR+1
  1920.       IPATCH=( I+1)/2
  1921.       IK= I-( I/2)*2
  1922.       IF( IK.EQ.0.AND. IPR.NE.1) GOTO 1
  1923.       JS= LDP- IPATCH
  1924.       XI= X( JS)
  1925.       YI= Y( JS)
  1926.       ZI= Z( JS)
  1927.       CALL HSFLD( XI, YI, ZI,0.)
  1928.       IF( IK.EQ.0) GOTO 1
  1929.       TX= T2X( JS)
  1930.       TY= T2Y( JS)
  1931.       TZ= T2Z( JS)
  1932.       GOTO 2
  1933.     1 TX= T1X( JS)
  1934.       TY= T1Y( JS)
  1935.       TZ= T1Z( JS)
  1936.     2 ETK=-( EXK* TX+ EYK* TY+ EZK* TZ)* SALP( JS)
  1937.       ETS=-( EXS* TX+ EYS* TY+ EZS* TZ)* SALP( JS)
  1938. C                                                                       
  1939. C     FILL MATRIX ELEMENTS.  ELEMENT LOCATIONS DETERMINED BY CONNECTION 
  1940. C     DATA.                                                             
  1941. C                                                                       
  1942.       ETC=-( EXC* TX+ EYC* TY+ EZC* TZ)* SALP( JS)
  1943. C     NORMAL FILL                                                       
  1944.       IF( ITRP.NE.0) GOTO 4
  1945.       DO 3  IJ=1, JSNO
  1946.       JX= JCO( IJ)
  1947.     3 CM( IPR, JX)= CM( IPR, JX)+ ETK* AX( IJ)+ ETS* BX( IJ)+ ETC* CX( 
  1948.      &IJ)
  1949.       GOTO 9
  1950. C     TRANSPOSED FILL                                                   
  1951.     4 IF( ITRP.EQ.2) GOTO 6
  1952.       DO 5  IJ=1, JSNO
  1953.       JX= JCO( IJ)
  1954.     5 CM( JX, IPR)= CM( JX, IPR)+ ETK* AX( IJ)+ ETS* BX( IJ)+ ETC* CX( 
  1955.      &IJ)
  1956. C     TRANSPOSED FILL - C(WS) AND D(WS)PRIME (=CW)                      
  1957.       GOTO 9
  1958.     6 DO 8  IJ=1, JSNO
  1959.       JX= JCO( IJ)
  1960.       IF( JX.GT. NR) GOTO 7
  1961.       CM( JX, IPR)= CM( JX, IPR)+ ETK* AX( IJ)+ ETS* BX( IJ)+ ETC* CX( 
  1962.      &IJ)
  1963.       GOTO 8
  1964.     7 JX= JX- NR
  1965.       CW( JX, IPR)= CW( JX, IPR)+ ETK* AX( IJ)+ ETS* BX( IJ)+ ETC* CX( 
  1966.      &IJ)
  1967.     8 CONTINUE
  1968.     9 CONTINUE
  1969.       RETURN
  1970.       END
  1971. C ***
  1972. C     DOUBLE PRECISION 6/4/85
  1973. C
  1974.       SUBROUTINE CMWW( J, I1, I2, CM, NR, CW, NW, ITRP)
  1975. C ***
  1976.       IMPLICIT REAL (A-H,O-Z)
  1977. C                                                                       
  1978. C     CMWW COMPUTES MATRIX ELEMENTS FOR WIRE-WIRE INTERACTIONS          
  1979. C                                                                       
  1980.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  1981.       COMPLEX  CM, CW, ETK, ETS, ETC, EXK, EYK, EZK, EXS, EYS, EZS, 
  1982.      &EXC, EYC, EZC
  1983.       COMMON  /DATA/ LD, N1, N2, N, NP, M1, M2, M, MP, X( NM), Y( NM), 
  1984.      &Z( NM), SI( NM), BI( NM), ALP( NM), BET( NM), ICON1( N2M), ICON2(
  1985.      & N2M), ITAG( N2M), ICONX( NM), WLAM, IPSYM
  1986.       COMMON  /ANGL/ SALP( NM)
  1987.       COMMON  /SEGJ/ AX(30), BX(30), CX(30), JCO(30), JSNO, ISCON(50), 
  1988.      &NSCON, IPCON(10), NPCON
  1989.       COMMON  /DATAJ/ S, B, XJ, YJ, ZJ, CABJ, SABJ, SALPJ, EXK, EYK, 
  1990.      &EZK, EXS, EYS, EZS, EXC, EYC, EZC, RKH, IEXK, IND1, INDD1, IND2, 
  1991.      &INDD2, IPGND
  1992.       DIMENSION  CM( NR,1), CW( NW,1), CAB(1), SAB(1)
  1993. C     SET SOURCE SEGMENT PARAMETERS                                     
  1994.       EQUIVALENCE(CAB,ALP),(SAB,BET)
  1995.       S= SI( J)
  1996.       B= BI( J)
  1997.       XJ= X( J)
  1998.       YJ= Y( J)
  1999.       ZJ= Z( J)
  2000.       CABJ= CAB( J)
  2001.       SABJ= SAB( J)
  2002.       SALPJ= SALP( J)
  2003. C     DECIDE WETHER EXT. T.W. APPROX. CAN BE USED                       
  2004.       IF( IEXK.EQ.0) GOTO 16
  2005.       IPR= ICON1( J)
  2006.       IF( IPR) 1,6,2
  2007.     1 IPR=- IPR
  2008.       IF(- ICON1( IPR).NE. J) GOTO 7
  2009.       GOTO 4
  2010.     2 IF( IPR.NE. J) GOTO 3
  2011.       IF( CABJ* CABJ+ SABJ* SABJ.GT.1.D-8) GOTO 7
  2012.       GOTO 5
  2013.     3 IF( ICON2( IPR).NE. J) GOTO 7
  2014.     4 XI= ABS( CABJ* CAB( IPR)+ SABJ* SAB( IPR)+ SALPJ* SALP( IPR))
  2015.       IF( XI.LT.0.999999D+0) GOTO 7
  2016.       IF( ABS( BI( IPR)/ B-1.).GT.1.D-6) GOTO 7
  2017.     5 IND1=0
  2018.       GOTO 8
  2019.     6 IND1=1
  2020.       GOTO 8
  2021.     7 IND1=2
  2022.     8 IPR= ICON2( J)
  2023.       IF( IPR) 9,14,10
  2024.     9 IPR=- IPR
  2025.       IF(- ICON2( IPR).NE. J) GOTO 15
  2026.       GOTO 12
  2027.    10 IF( IPR.NE. J) GOTO 11
  2028.       IF( CABJ* CABJ+ SABJ* SABJ.GT.1.D-8) GOTO 15
  2029.       GOTO 13
  2030.    11 IF( ICON1( IPR).NE. J) GOTO 15
  2031.    12 XI= ABS( CABJ* CAB( IPR)+ SABJ* SAB( IPR)+ SALPJ* SALP( IPR))
  2032.       IF( XI.LT.0.999999D+0) GOTO 15
  2033.       IF( ABS( BI( IPR)/ B-1.).GT.1.D-6) GOTO 15
  2034.    13 IND2=0
  2035.       GOTO 16
  2036.    14 IND2=1
  2037.       GOTO 16
  2038.    15 IND2=2
  2039. C                                                                       
  2040. C     OBSERVATION LOOP                                                  
  2041. C                                                                       
  2042.    16 CONTINUE
  2043.       IPR=0
  2044.       DO 23  I= I1, I2
  2045.       IPR= IPR+1
  2046.       IJ= I- J
  2047.       XI= X( I)
  2048.       YI= Y( I)
  2049.       ZI= Z( I)
  2050.       AI= BI( I)
  2051.       CABI= CAB( I)
  2052.       SABI= SAB( I)
  2053.       SALPI= SALP( I)
  2054.       CALL EFLD( XI, YI, ZI, AI, IJ)
  2055.       ETK= EXK* CABI+ EYK* SABI+ EZK* SALPI
  2056.       ETS= EXS* CABI+ EYS* SABI+ EZS* SALPI
  2057. C                                                                       
  2058. C     FILL MATRIX ELEMENTS.  ELEMENT LOCATIONS DETERMINED BY CONNECTION 
  2059. C     DATA.                                                             
  2060. C                                                                       
  2061.       ETC= EXC* CABI+ EYC* SABI+ EZC* SALPI
  2062. C     NORMAL FILL                                                       
  2063.       IF( ITRP.NE.0) GOTO 18
  2064.       DO 17  IJ=1, JSNO
  2065.       JX= JCO( IJ)
  2066.    17 CM( IPR, JX)= CM( IPR, JX)+ ETK* AX( IJ)+ ETS* BX( IJ)+ ETC* CX( 
  2067.      &IJ)
  2068.       GOTO 23
  2069. C     TRANSPOSED FILL                                                   
  2070.    18 IF( ITRP.EQ.2) GOTO 20
  2071.       DO 19  IJ=1, JSNO
  2072.       JX= JCO( IJ)
  2073.    19 CM( JX, IPR)= CM( JX, IPR)+ ETK* AX( IJ)+ ETS* BX( IJ)+ ETC* CX( 
  2074.      &IJ)
  2075. C     TRANS. FILL FOR C(WW) - TEST FOR ELEMENTS FOR D(WW)PRIME.  (=CW)  
  2076.       GOTO 23
  2077.    20 DO 22  IJ=1, JSNO
  2078.       JX= JCO( IJ)
  2079.       IF( JX.GT. NR) GOTO 21
  2080.       CM( JX, IPR)= CM( JX, IPR)+ ETK* AX( IJ)+ ETS* BX( IJ)+ ETC* CX( 
  2081.      &IJ)
  2082.       GOTO 22
  2083.    21 JX= JX- NR
  2084.       CW( JX, IPR)= CW( JX, IPR)+ ETK* AX( IJ)+ ETS* BX( IJ)+ ETC* CX( 
  2085.      &IJ)
  2086.    22 CONTINUE
  2087.    23 CONTINUE
  2088.       RETURN
  2089.       END
  2090. C ***
  2091. C     DOUBLE PRECISION 6/4/85
  2092. C
  2093.       SUBROUTINE CONECT( IGND)
  2094. C ***
  2095.       IMPLICIT REAL (A-H,O-Z)
  2096. C                                                                       
  2097. C     CONNECT SETS UP SEGMENT CONNECTION DATA IN ARRAYS ICON1 AND ICON2 
  2098. C     BY SEARCHING FOR SEGMENT ENDS THAT ARE IN CONTACT.                
  2099. C                                                                       
  2100.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  2101.       COMMON  /DATA/ LD, N1, N2, N, NP, M1, M2, M, MP, X( NM), Y( NM), 
  2102.      &Z( NM), SI( NM), BI( NM), ALP( NM), BET( NM), ICON1( N2M), ICON2(
  2103.      & N2M), ITAG( N2M), ICONX( NM), WLAM, IPSYM
  2104.       COMMON  /SEGJ/ AX(30), BX(30), CX(30), JCO(30), JSNO, ISCON(50), 
  2105.      &NSCON, IPCON(10), NPCON
  2106.       DIMENSION  X2(1), Y2(1), Z2(1)
  2107.       EQUIVALENCE(X2,SI),(Y2,ALP),(Z2,BET)
  2108.       DATA   JMAX/30/, SMIN/1.D-3/, NSMAX/50/, NPMAX/10/
  2109.       NSCON=0
  2110.       NPCON=0
  2111.       IF( IGND.EQ.0) GOTO 3
  2112.       WRITE( 6,54) 
  2113.       IF( IGND.GT.0) WRITE( 6,55) 
  2114.       IF( IPSYM.NE.2) GOTO 1
  2115.       NP=2* NP
  2116.       MP=2* MP
  2117.     1 IF( IABS( IPSYM).LE.2) GOTO 2
  2118.       NP= N
  2119.       MP= M
  2120.     2 IF( NP.GT. N) STOP
  2121.       IF( NP.EQ. N.AND. MP.EQ. M) IPSYM=0
  2122.     3 IF( N.EQ.0) GOTO 26
  2123.       DO 15  I=1, N
  2124.       ICONX( I)=0
  2125.       XI1= X( I)
  2126.       YI1= Y( I)
  2127.       ZI1= Z( I)
  2128.       XI2= X2( I)
  2129.       YI2= Y2( I)
  2130.       ZI2= Z2( I)
  2131. C                                                                       
  2132. C     DETERMINE CONNECTION DATA FOR END 1 OF SEGMENT.                   
  2133. C                                                                       
  2134.       SLEN= SQRT(( XI2- XI1)**2+( YI2- YI1)**2+( ZI2- ZI1)**2)* SMIN
  2135.       IF( IGND.LT.1) GOTO 5
  2136.       IF( ZI1.GT.- SLEN) GOTO 4
  2137.       WRITE( 6,56)  I
  2138.       STOP
  2139.     4 IF( ZI1.GT. SLEN) GOTO 5
  2140.       ICON1( I)= I
  2141.       Z( I)=0.
  2142.       GOTO 9
  2143.     5 IC= I
  2144.       DO 7  J=2, N
  2145.       IC= IC+1
  2146.       IF( IC.GT. N) IC=1
  2147.       SEP= ABS( XI1- X( IC))+ ABS( YI1- Y( IC))+ ABS( ZI1- Z( IC))
  2148.       IF( SEP.GT. SLEN) GOTO 6
  2149.       ICON1( I)=- IC
  2150.       GOTO 8
  2151.     6 SEP= ABS( XI1- X2( IC))+ ABS( YI1- Y2( IC))+ ABS( ZI1- Z2( IC))
  2152.       IF( SEP.GT. SLEN) GOTO 7
  2153.       ICON1( I)= IC
  2154.       GOTO 8
  2155.     7 CONTINUE
  2156.       IF( I.LT. N2.AND. ICON1( I).GT.10000) GOTO 8
  2157. C                                                                       
  2158. C     DETERMINE CONNECTION DATA FOR END 2 OF SEGMENT.                   
  2159. C                                                                       
  2160.       ICON1( I)=0
  2161.     8 IF( IGND.LT.1) GOTO 12
  2162.     9 IF( ZI2.GT.- SLEN) GOTO 10
  2163.       WRITE( 6,56)  I
  2164.       STOP
  2165.    10 IF( ZI2.GT. SLEN) GOTO 12
  2166.       IF( ICON1( I).NE. I) GOTO 11
  2167.       WRITE( 6,57)  I
  2168.       STOP
  2169.    11 ICON2( I)= I
  2170.       Z2( I)=0.
  2171.       GOTO 15
  2172.    12 IC= I
  2173.       DO 14  J=2, N
  2174.       IC= IC+1
  2175.       IF( IC.GT. N) IC=1
  2176.       SEP= ABS( XI2- X( IC))+ ABS( YI2- Y( IC))+ ABS( ZI2- Z( IC))
  2177.       IF( SEP.GT. SLEN) GOTO 13
  2178.       ICON2( I)= IC
  2179.       GOTO 15
  2180.    13 SEP= ABS( XI2- X2( IC))+ ABS( YI2- Y2( IC))+ ABS( ZI2- Z2( IC))
  2181.       IF( SEP.GT. SLEN) GOTO 14
  2182.       ICON2( I)=- IC
  2183.       GOTO 15
  2184.    14 CONTINUE
  2185.       IF( I.LT. N2.AND. ICON2( I).GT.10000) GOTO 15
  2186.       ICON2( I)=0
  2187.    15 CONTINUE
  2188. C     FIND WIRE-SURFACE CONNECTIONS FOR NEW PATCHES                     
  2189.       IF( M.EQ.0) GOTO 26
  2190.       IX= LD+1- M1
  2191.       I= M2
  2192.    16 IF( I.GT. M) GOTO 20
  2193.       IX= IX-1
  2194.       XS= X( IX)
  2195.       YS= Y( IX)
  2196.       ZS= Z( IX)
  2197.       DO 18  ISEG=1, N
  2198.       XI1= X( ISEG)
  2199.       YI1= Y( ISEG)
  2200.       ZI1= Z( ISEG)
  2201.       XI2= X2( ISEG)
  2202.       YI2= Y2( ISEG)
  2203.       ZI2= Z2( ISEG)
  2204. C     FOR FIRST END OF SEGMENT                                          
  2205.       SLEN=( ABS( XI2- XI1)+ ABS( YI2- YI1)+ ABS( ZI2- ZI1))* SMIN
  2206.       SEP= ABS( XI1- XS)+ ABS( YI1- YS)+ ABS( ZI1- ZS)
  2207. C     CONNECTION - DIVIDE PATCH INTO 4 PATCHES AT PRESENT ARRAY LOC.    
  2208.       IF( SEP.GT. SLEN) GOTO 17
  2209.       ICON1( ISEG)=10000+ I
  2210.       IC=0
  2211.       CALL SUBPH( I, IC, XI1, YI1, ZI1, XI2, YI2, ZI2, XA, YA, ZA, XS, 
  2212.      &YS, ZS)
  2213.       GOTO 19
  2214.    17 SEP= ABS( XI2- XS)+ ABS( YI2- YS)+ ABS( ZI2- ZS)
  2215.       IF( SEP.GT. SLEN) GOTO 18
  2216.       ICON2( ISEG)=10000+ I
  2217.       IC=0
  2218.       CALL SUBPH( I, IC, XI1, YI1, ZI1, XI2, YI2, ZI2, XA, YA, ZA, XS, 
  2219.      &YS, ZS)
  2220.       GOTO 19
  2221.    18 CONTINUE
  2222.    19 I= I+1
  2223. C     REPEAT SEARCH FOR NEW SEGMENTS CONNECTED TO NGF PATCHES.          
  2224.       GOTO 16
  2225.    20 IF( M1.EQ.0.OR. N2.GT. N) GOTO 26
  2226.       IX= LD+1
  2227.       I=1
  2228.    21 IF( I.GT. M1) GOTO 25
  2229.       IX= IX-1
  2230.       XS= X( IX)
  2231.       YS= Y( IX)
  2232.       ZS= Z( IX)
  2233.       DO 23  ISEG= N2, N
  2234.       XI1= X( ISEG)
  2235.       YI1= Y( ISEG)
  2236.       ZI1= Z( ISEG)
  2237.       XI2= X2( ISEG)
  2238.       YI2= Y2( ISEG)
  2239.       ZI2= Z2( ISEG)
  2240.       SLEN=( ABS( XI2- XI1)+ ABS( YI2- YI1)+ ABS( ZI2- ZI1))* SMIN
  2241.       SEP= ABS( XI1- XS)+ ABS( YI1- YS)+ ABS( ZI1- ZS)
  2242.       IF( SEP.GT. SLEN) GOTO 22
  2243.       ICON1( ISEG)=10001+ M
  2244.       IC=1
  2245.       NPCON= NPCON+1
  2246.       IPCON( NPCON)= I
  2247.       CALL SUBPH( I, IC, XI1, YI1, ZI1, XI2, YI2, ZI2, XA, YA, ZA, XS, 
  2248.      &YS, ZS)
  2249.       GOTO 24
  2250.    22 SEP= ABS( XI2- XS)+ ABS( YI2- YS)+ ABS( ZI2- ZS)
  2251.       IF( SEP.GT. SLEN) GOTO 23
  2252.       ICON2( ISEG)=10001+ M
  2253.       IC=1
  2254.       NPCON= NPCON+1
  2255.       IPCON( NPCON)= I
  2256.       CALL SUBPH( I, IC, XI1, YI1, ZI1, XI2, YI2, ZI2, XA, YA, ZA, XS, 
  2257.      &YS, ZS)
  2258.       GOTO 24
  2259.    23 CONTINUE
  2260.    24 I= I+1
  2261.       GOTO 21
  2262.    25 IF( NPCON.LE. NPMAX) GOTO 26
  2263.       WRITE( 6,62)  NPMAX
  2264.       STOP
  2265.    26 WRITE( 6,58)  N, NP, IPSYM
  2266.       IF( M.GT.0) WRITE( 6,61)  M, MP
  2267.       ISEG=( N+ M)/( NP+ MP)
  2268.       IF( ISEG.EQ.1) GOTO 30
  2269.       IF( IPSYM) 28,27,29
  2270.    27 STOP
  2271.    28 WRITE( 6,59)  ISEG
  2272.       GOTO 30
  2273.    29 IC= ISEG/2
  2274.       IF( ISEG.EQ.8) IC=3
  2275.       WRITE( 6,60)  IC
  2276.    30 IF( N.EQ.0) GOTO 48
  2277.       WRITE( 6,50) 
  2278. C     ADJUST CONNECTED SEG. ENDS TO EXACTLY COINCIDE.  PRINT JUNCTIONS  
  2279. C     OF 3 OR MORE SEG.  ALSO FIND OLD SEG. CONNECTING TO NEW SEG.      
  2280.       ISEG=0
  2281.       DO 44  J=1, N
  2282.       IEND=-1
  2283.       JEND=-1
  2284.       IX= ICON1( J)
  2285.       IC=1
  2286.       JCO(1)=- J
  2287.       XA= X( J)
  2288.       YA= Y( J)
  2289.       ZA= Z( J)
  2290.    31 IF( IX.EQ.0) GOTO 43
  2291.       IF( IX.EQ. J) GOTO 43
  2292.       IF( IX.GT.10000) GOTO 43
  2293.       NSFLG=0
  2294.    32 IF( IX) 33,49,34
  2295.    33 IX=- IX
  2296.       GOTO 35
  2297.    34 JEND=- JEND
  2298.    35 IF( IX.EQ. J) GOTO 37
  2299.       IF( IX.LT. J) GOTO 43
  2300.       IC= IC+1
  2301.       IF( IC.GT. JMAX) GOTO 49
  2302.       JCO( IC)= IX* JEND
  2303.       IF( IX.GT. N1) NSFLG=1
  2304.       IF( JEND.EQ.1) GOTO 36
  2305.       XA= XA+ X( IX)
  2306.       YA= YA+ Y( IX)
  2307.       ZA= ZA+ Z( IX)
  2308.       IX= ICON1( IX)
  2309.       GOTO 32
  2310.    36 XA= XA+ X2( IX)
  2311.       YA= YA+ Y2( IX)
  2312.       ZA= ZA+ Z2( IX)
  2313.       IX= ICON2( IX)
  2314.       GOTO 32
  2315.    37 SEP= IC
  2316.       XA= XA/ SEP
  2317.       YA= YA/ SEP
  2318.       ZA= ZA/ SEP
  2319.       DO 39  I=1, IC
  2320.       IX= JCO( I)
  2321.       IF( IX.GT.0) GOTO 38
  2322.       IX=- IX
  2323.       X( IX)= XA
  2324.       Y( IX)= YA
  2325.       Z( IX)= ZA
  2326.       GOTO 39
  2327.    38 X2( IX)= XA
  2328.       Y2( IX)= YA
  2329.       Z2( IX)= ZA
  2330.    39 CONTINUE
  2331.       IF( N1.EQ.0) GOTO 42
  2332.       IF( NSFLG.EQ.0) GOTO 42
  2333.       DO 41  I=1, IC
  2334.       IX= IABS( JCO( I))
  2335.       IF( IX.GT. N1) GOTO 41
  2336.       IF( ICONX( IX).NE.0) GOTO 41
  2337.       NSCON= NSCON+1
  2338.       IF( NSCON.LE. NSMAX) GOTO 40
  2339.       WRITE( 6,62)  NSMAX
  2340.       STOP
  2341.    40 ISCON( NSCON)= IX
  2342.       ICONX( IX)= NSCON
  2343.    41 CONTINUE
  2344.    42 IF( IC.LT.3) GOTO 43
  2345.       ISEG= ISEG+1
  2346.       WRITE( 6,51)  ISEG,( JCO( I), I=1, IC)
  2347.    43 IF( IEND.EQ.1) GOTO 44
  2348.       IEND=1
  2349.       JEND=1
  2350.       IX= ICON2( J)
  2351.       IC=1
  2352.       JCO(1)= J
  2353.       XA= X2( J)
  2354.       YA= Y2( J)
  2355.       ZA= Z2( J)
  2356.       GOTO 31
  2357.    44 CONTINUE
  2358.       IF( ISEG.EQ.0) WRITE( 6,52) 
  2359. C     FIND OLD SEGMENTS THAT CONNECT TO NEW PATCHES                     
  2360.       IF( N1.EQ.0.OR. M1.EQ. M) GOTO 48
  2361.       DO 47  J=1, N1
  2362.       IX= ICON1( J)
  2363.       IF( IX.LT.10000) GOTO 45
  2364.       IX= IX-10000
  2365.       IF( IX.GT. M1) GOTO 46
  2366.    45 IX= ICON2( J)
  2367.       IF( IX.LT.10000) GOTO 47
  2368.       IX= IX-10000
  2369.       IF( IX.LT. M2) GOTO 47
  2370.    46 IF( ICONX( J).NE.0) GOTO 47
  2371.       NSCON= NSCON+1
  2372.       ISCON( NSCON)= J
  2373.       ICONX( J)= NSCON
  2374.    47 CONTINUE
  2375.    48 CONTINUE
  2376.       RETURN
  2377.    49 WRITE( 6,53)  IX
  2378. C                                                                       
  2379.       STOP
  2380.    50 FORMAT(//,9X,'- MULTIPLE WIRE JUNCTIONS -',/,1X,'JUNCTION',4X,
  2381.      &'SEGMENTS  (- FOR END 1, + FOR END 2)')
  2382.    51 FORMAT(1X,I5,5X,20I5,/,(11X,20I5))
  2383.    52 FORMAT(2X,'NONE')
  2384.    53 FORMAT(' CONNECT - SEGMENT CONNECTION ERROR FOR SEGMENT',I5)
  2385.    54 FORMAT(/,3X,'GROUND PLANE SPECIFIED.')
  2386.    55 FORMAT(/,3X,'WHERE WIRE ENDS TOUCH GROUND, CURRENT WILL BE ',
  2387.      &'INTERPOLATED TO IMAGE IN GROUND PLANE.',/)
  2388.    56 FORMAT(' GEOMETRY DATA ERROR-- SEGMENT',I5,' EXTENDS BELOW GRO',
  2389.      &'UND')
  2390.    57 FORMAT(' GEOMETRY DATA ERROR--SEGMENT',I5,' LIES IN GROUND ',
  2391.      &'PLANE.')
  2392.    58 FORMAT(/,3X,'TOTAL SEGMENTS USED=',I5,5X,'NO. SEG. IN ','A SY',
  2393.      &'MMETRIC CELL=',I5,5X,'SYMMETRY FLAG=',I3)
  2394.    59 FORMAT(' STRUCTURE HAS',I4,' FOLD ROTATIONAL SYMMETRY',/)
  2395.    60 FORMAT(' STRUCTURE HAS',I2,' PLANES OF SYMMETRY',/)
  2396.    61 FORMAT(3X,'TOTAL PATCHES USED=',I5,6X,'NO. PATCHES IN A SYMMET',
  2397.      &'RIC CELL=',I5)
  2398.    62 FORMAT(' ERROR - NO. NEW SEGMENTS CONNECTED TO N.G.F. SEGMENTS',
  2399.      &'OR PATCHES EXCEEDS LIMIT OF',I5)
  2400.       END
  2401. C ***
  2402. C     DOUBLE PRECISION 6/4/85
  2403. C
  2404.       SUBROUTINE COUPLE( CUR, WLAM)
  2405. C ***
  2406.       IMPLICIT REAL (A-H,O-Z)
  2407. C                                                                       
  2408. C     COUPLE COMPUTES THE MAXIMUM COUPLING BETWEEN PAIRS OF SEGMENTS.   
  2409. C                                                                       
  2410.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  2411.       COMPLEX  Y11A, Y12A, CUR, Y11, Y12, Y22, YL, YIN, ZL, ZIN, RHO
  2412.      &, VQD, VSANT, VQDS
  2413.       COMMON  /YPARM/ NCOUP, ICOUP, NCTAG(5), NCSEG(5), Y11A(5), Y12A(
  2414.      &20)
  2415.       COMMON  /VSORC/ VQD(30), VSANT(30), VQDS(30), IVQD(30), ISANT(30)
  2416.      &, IQDS(30), NVQD, NSANT, NQDS
  2417.       DIMENSION  CUR(1)
  2418.       IF( NSANT.NE.1.OR. NVQD.NE.0) RETURN
  2419.       J= ISEGNO( NCTAG( ICOUP+1), NCSEG( ICOUP+1))
  2420.       IF( J.NE. ISANT(1)) RETURN
  2421.       ICOUP= ICOUP+1
  2422.       ZIN= VSANT(1)
  2423.       Y11A( ICOUP)= CUR( J)* WLAM/ ZIN
  2424.       L1=( ICOUP-1)*( NCOUP-1)
  2425.       DO 1  I=1, NCOUP
  2426.       IF( I.EQ. ICOUP) GOTO 1
  2427.       K= ISEGNO( NCTAG( I), NCSEG( I))
  2428.       L1= L1+1
  2429.       Y12A( L1)= CUR( K)* WLAM/ ZIN
  2430.     1 CONTINUE
  2431.       IF( ICOUP.LT. NCOUP) RETURN
  2432.       WRITE( 6,6) 
  2433.       NPM1= NCOUP-1
  2434.       DO 5  I=1, NPM1
  2435.       ITT1= NCTAG( I)
  2436.       ITS1= NCSEG( I)
  2437.       ISG1= ISEGNO( ITT1, ITS1)
  2438.       L1= I+1
  2439.       DO 5  J= L1, NCOUP
  2440.       ITT2= NCTAG( J)
  2441.       ITS2= NCSEG( J)
  2442.       ISG2= ISEGNO( ITT2, ITS2)
  2443.       J1= J+( I-1)* NPM1-1
  2444.       J2= I+( J-1)* NPM1
  2445.       Y11= Y11A( I)
  2446.       Y22= Y11A( J)
  2447.       Y12=.5*( Y12A( J1)+ Y12A( J2))
  2448.       YIN= Y12* Y12
  2449.       DBC= ABS( YIN)
  2450.       C= DBC/(2.* REAL( Y11)* REAL( Y22)- REAL( YIN))
  2451.       IF( C.LT.0..OR. C.GT.1.) GOTO 4
  2452.       IF( C.LT..01) GOTO 2
  2453.       GMAX=(1.- SQRT(1.- C* C))/ C
  2454.       GOTO 3
  2455.     2 GMAX=.5*( C+.25* C* C* C)
  2456.     3 RHO= GMAX* CONJG( YIN)/ DBC
  2457.       YL=((1.- RHO)/(1.+ RHO)+1.)* REAL( Y22)- Y22
  2458.       ZL=1./ YL
  2459.       YIN= Y11- YIN/( Y22+ YL)
  2460.       ZIN=1./ YIN
  2461.       DBC= DB10( GMAX)
  2462.       WRITE( 6,7)  ITT1, ITS1, ISG1, ITT2, ITS2, ISG2, DBC, ZL, ZIN
  2463.       GOTO 5
  2464.     4 WRITE( 6,8)  ITT1, ITS1, ISG1, ITT2, ITS2, ISG2, C
  2465.     5 CONTINUE
  2466. C                                                                       
  2467.       RETURN
  2468.     6 FORMAT(///,36X,'- - - ISOLATION DATA - - -',//,6X,'- - COUPLIN',
  2469.      &'G BETWEEN - -',8X,'MAXIMUM',15X,'- - - FOR MAXIMUM COUPLING - ',
  2470.      &'- -',/,12X,'SEG.',14X,'SEG.',3X,'COUPLING',4X,'LOAD IMPEDANCE ',
  2471.      &'(2ND SEG.)',7X,'INPUT IMPEDANCE',/,2X,'TAG/SEG.',3X,'NO.',4X,
  2472.      &'TAG/''SEG.',3X,'NO.',6X,'(DB)',8X,'REAL',9X,'IMAG.',9X,'REAL',9X
  2473.      &,'IMAG.')
  2474.     7 FORMAT(2(1X,I4,1X,I4,1X,I5,2X),F9.3,2X,1P,2(2X,E12.5,1X,E12.5))
  2475.     8 FORMAT(2(1X,I4,1X,I4,1X,I5,2X),'**ERROR** COUPLING IS NOT BETWE',
  2476.      &'EN 0 AND 1. (=',1P,E12.5,')')
  2477.       END
  2478. C ***
  2479. C     DOUBLE PRECISION 6/4/85
  2480. C
  2481.       SUBROUTINE DATAGN
  2482. C ***
  2483.       IMPLICIT REAL (A-H,O-Z)
  2484. C                                                                       
  2485. C     DATAGN IS THE MAIN ROUTINE FOR INPUT OF GEOMETRY DATA.            
  2486. C                                                                       
  2487. C***
  2488.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  2489. C***
  2490.       CHARACTER *2  GM, ATST
  2491.       COMMON  /DATA/ LD, N1, N2, N, NP, M1, M2, M, MP, X( NM), Y( NM), 
  2492.      &Z( NM), SI( NM), BI( NM), ALP( NM), BET( NM), ICON1( N2M), ICON2(
  2493.      & N2M), ITAG( N2M), ICONX( NM), WLAM, IPSYM
  2494. C***
  2495.       COMMON  /ANGL/ SALP( NM)
  2496. C***
  2497.       COMMON  /PLOT/ IPLP1, IPLP2, IPLP3, IPLP4
  2498.       DIMENSION  X2(1), Y2(1), Z2(1), T1X(1), T1Y(1), T1Z(1), T2X(1), 
  2499.      &T2Y(1), T2Z(1), ATST(13), IFX(2), IFY(2), IFZ(2), CAB(1), SAB(1),
  2500.      & IPT(4)
  2501. C***
  2502.       EQUIVALENCE(T1X,SI),(T1Y,ALP),(T1Z,BET),(T2X,ICON1),(T2Y,ICON2),(
  2503.      &T2Z,ITAG),(X2,SI),(Y2,ALP),(Z2,BET),(CAB,ALP),(SAB,BET)
  2504. C***
  2505.       data atst/'GW','GX','GR','GS','GE','GM','SP','SM','GF','GA',
  2506.      $          'SC','GC','GH'/
  2507. *      DATA   ATST/2HGW,2HGX,2HGR,2HGS,2HGE,2HGM,2HSP,2HSM,2HGF,2HGA,
  2508. *     &2HSC,2HGC,2HGH/
  2509.       DATA   IFX/1H ,1HX/, IFY/1H ,1HY/, IFZ/1H ,1HZ/
  2510.       DATA   TA/0.01745329252D+0/, TD/57.29577951D+0/, IPT/1HP,1HR,1HT,
  2511.      &1HQ/
  2512.       IPSYM=0
  2513.       NWIRE=0
  2514.       N=0
  2515.       NP=0
  2516.       M=0
  2517.       MP=0
  2518.       N1=0
  2519.       N2=1
  2520.       M1=0
  2521.       M2=1
  2522.       ISCT=0
  2523. C                                                                       
  2524. C     READ GEOMETRY DATA CARD AND BRANCH TO SECTION FOR OPERATION       
  2525. C     REQUESTED                                                         
  2526. C                                                                       
  2527. C***   
  2528. C 1     READ (5,42) GM,ITG,NS,XW1,YW1,ZW1,XW2,YW2,ZW2,RAD                
  2529.       IPHD=0
  2530. C***
  2531.     1 CALL READGM( GM, ITG, NS, XW1, YW1, ZW1, XW2, YW2, ZW2, RAD)
  2532.       IF( N+ M.GT. LD) GOTO 37
  2533.       IF( GM.EQ. ATST(9)) GOTO 27
  2534.       IF( IPHD.EQ.1) GOTO 2
  2535.       WRITE( 6,40) 
  2536.       WRITE( 6,41) 
  2537.       IPHD=1
  2538.     2 IF( GM.EQ. ATST(11)) GOTO 10
  2539.       ISCT=0
  2540.       IF( GM.EQ. ATST(1)) GOTO 3
  2541.       IF( GM.EQ. ATST(2)) GOTO 18
  2542.       IF( GM.EQ. ATST(3)) GOTO 19
  2543.       IF( GM.EQ. ATST(4)) GOTO 21
  2544.       IF( GM.EQ. ATST(7)) GOTO 9
  2545.       IF( GM.EQ. ATST(8)) GOTO 13
  2546.       IF( GM.EQ. ATST(5)) GOTO 29
  2547.       IF( GM.EQ. ATST(6)) GOTO 26
  2548. C***
  2549.       IF( GM.EQ. ATST(10)) GOTO 8
  2550. C***
  2551.       IF( GM.EQ. ATST(13)) GOTO 123
  2552. C                                                                       
  2553. C     GENERATE SEGMENT DATA FOR STRAIGHT WIRE.                          
  2554. C                                                                       
  2555.       GOTO 36
  2556.     3 NWIRE= NWIRE+1
  2557.       I1= N+1
  2558.       I2= N+ NS
  2559.       WRITE( 6,43)  NWIRE, XW1, YW1, ZW1, XW2, YW2, ZW2, RAD, NS, I1, 
  2560.      &I2, ITG
  2561.       IF( RAD.EQ.0) GOTO 4
  2562.       XS1=1.
  2563.       YS1=1.
  2564. C***
  2565.       GOTO 7
  2566. C 4     READ (5,42) GM,IX,IY,XS1,YS1,ZS1                                 
  2567. C***
  2568.     4 CALL READGM( GM, IX, IY, XS1, YS1, ZS1, DUMMY, DUMMY, DUMMY, 
  2569.      &DUMMY)
  2570.       IF( GM.EQ. ATST(12)) GOTO 6
  2571.     5 WRITE( 6,48) 
  2572.       STOP
  2573.     6 WRITE( 6,61)  XS1, YS1, ZS1
  2574.       IF( YS1.EQ.0.OR. ZS1.EQ.0) GOTO 5
  2575.       RAD= YS1
  2576.       YS1=( ZS1/ YS1)**(1./( NS-1.))
  2577.     7 CALL WIRE( XW1, YW1, ZW1, XW2, YW2, ZW2, RAD, XS1, YS1, NS, ITG)
  2578. C                                                                       
  2579. C     GENERATE SEGMENT DATA FOR WIRE ARC                                
  2580. C                                                                       
  2581.       GOTO 1
  2582.     8 NWIRE= NWIRE+1
  2583.       I1= N+1
  2584.       I2= N+ NS
  2585.       WRITE( 6,38)  NWIRE, XW1, YW1, ZW1, XW2, NS, I1, I2, ITG
  2586.       CALL ARC( ITG, NS, XW1, YW1, ZW1, XW2)
  2587. C***
  2588. C
  2589. C     GENERATE HELIX
  2590. C
  2591.       GOTO 1
  2592.   123 NWIRE= NWIRE+1
  2593.       I1= N+1
  2594.       I2= N+ NS
  2595.       WRITE( 6,124)  XW1, YW1, NWIRE, ZW1, XW2, YW2, ZW2, RAD, NS, I1, 
  2596.      &I2, ITG
  2597.       CALL HELIX( XW1, YW1, ZW1, XW2, YW2, ZW2, RAD, NS, ITG)
  2598. C
  2599.       GOTO 1
  2600. C***
  2601. C                                                                       
  2602. C     GENERATE SINGLE NEW PATCH                                         
  2603. C                                                                       
  2604.   124 FORMAT(5X,'HELIX STRUCTURE-   AXIAL SPACING BETWEEN TURNS =',F8.3
  2605.      &,' TOTAL AXIAL LENGTH =',F8.3/1X,I5,2X,'RADIUS OF HELIX =',4(2X,F
  2606.      &8.3),7X,F11.5,I8,4X,I5,1X,I5,3X,I5)
  2607.     9 I1= M+1
  2608.       NS= NS+1
  2609.       IF( ITG.NE.0) GOTO 17
  2610.       WRITE( 6,51)  I1, IPT( NS), XW1, YW1, ZW1, XW2, YW2, ZW2
  2611.       IF( NS.EQ.2.OR. NS.EQ.4) ISCT=1
  2612.       IF( NS.GT.1) GOTO 14
  2613.       XW2= XW2* TA
  2614.       YW2= YW2* TA
  2615.       GOTO 16
  2616.    10 IF( ISCT.EQ.0) GOTO 17
  2617.       I1= M+1
  2618.       NS= NS+1
  2619.       IF( ITG.NE.0) GOTO 17
  2620.       IF( NS.NE.2.AND. NS.NE.4) GOTO 17
  2621.       XS1= X4
  2622.       YS1= Y4
  2623.       ZS1= Z4
  2624.       XS2= X3
  2625.       YS2= Y3
  2626.       ZS2= Z3
  2627.       X3= XW1
  2628.       Y3= YW1
  2629.       Z3= ZW1
  2630.       IF( NS.NE.4) GOTO 11
  2631.       X4= XW2
  2632.       Y4= YW2
  2633.       Z4= ZW2
  2634.    11 XW1= XS1
  2635.       YW1= YS1
  2636.       ZW1= ZS1
  2637.       XW2= XS2
  2638.       YW2= YS2
  2639.       ZW2= ZS2
  2640.       IF( NS.EQ.4) GOTO 12
  2641.       X4= XW1+ X3- XW2
  2642.       Y4= YW1+ Y3- YW2
  2643.       Z4= ZW1+ Z3- ZW2
  2644.    12 WRITE( 6,51)  I1, IPT( NS), XW1, YW1, ZW1, XW2, YW2, ZW2
  2645.       WRITE( 6,39)  X3, Y3, Z3, X4, Y4, Z4
  2646. C                                                                       
  2647. C     GENERATE MULTIPLE-PATCH SURFACE                                   
  2648. C                                                                       
  2649.       GOTO 16
  2650.    13 I1= M+1
  2651.       WRITE( 6,59)  I1, IPT(2), XW1, YW1, ZW1, XW2, YW2, ZW2, ITG, NS
  2652. C***
  2653.       IF( ITG.LT.1.OR. NS.LT.1) GOTO 17
  2654. C 14    READ (5,42) GM,IX,IY,X3,Y3,Z3,X4,Y4,Z4                           
  2655. C***
  2656.    14 CALL READGM( GM, IX, IY, X3, Y3, Z3, X4, Y4, Z4, DUMMY)
  2657.       IF( NS.NE.2.AND. ITG.LT.1) GOTO 15
  2658.       X4= XW1+ X3- XW2
  2659.       Y4= YW1+ Y3- YW2
  2660.       Z4= ZW1+ Z3- ZW2
  2661.    15 WRITE( 6,39)  X3, Y3, Z3, X4, Y4, Z4
  2662.       IF( GM.NE. ATST(11)) GOTO 17
  2663.    16 CALL PATCH( ITG, NS, XW1, YW1, ZW1, XW2, YW2, ZW2, X3, Y3, Z3, X4
  2664.      &, Y4, Z4)
  2665.       GOTO 1
  2666.    17 WRITE( 6,60) 
  2667. C                                                                       
  2668. C     REFLECT STRUCTURE ALONG X,Y, OR Z AXES OR ROTATE TO FORM CYLINDER.
  2669. C                                                                       
  2670.       STOP
  2671.    18 IY= NS/10
  2672.       IZ= NS- IY*10
  2673.       IX= IY/10
  2674.       IY= IY- IX*10
  2675.       IF( IX.NE.0) IX=1
  2676.       IF( IY.NE.0) IY=1
  2677.       IF( IZ.NE.0) IZ=1
  2678.       WRITE( 6,44)  IFX( IX+1), IFY( IY+1), IFZ( IZ+1), ITG
  2679.       GOTO 20
  2680.    19 WRITE( 6,45)  NS, ITG
  2681.       IX=-1
  2682.    20 CALL REFLC( IX, IY, IZ, ITG, NS)
  2683. C                                                                       
  2684. C     SCALE STRUCTURE DIMENSIONS BY FACTOR XW1.                         
  2685. C                                                                       
  2686.       GOTO 1
  2687.    21 IF( N.LT. N2) GOTO 23
  2688.       DO 22  I= N2, N
  2689.       X( I)= X( I)* XW1
  2690.       Y( I)= Y( I)* XW1
  2691.       Z( I)= Z( I)* XW1
  2692.       X2( I)= X2( I)* XW1
  2693.       Y2( I)= Y2( I)* XW1
  2694.       Z2( I)= Z2( I)* XW1
  2695.    22 BI( I)= BI( I)* XW1
  2696.    23 IF( M.LT. M2) GOTO 25
  2697.       YW1= XW1* XW1
  2698.       IX= LD+1- M
  2699.       IY= LD- M1
  2700.       DO 24  I= IX, IY
  2701.       X( I)= X( I)* XW1
  2702.       Y( I)= Y( I)* XW1
  2703.       Z( I)= Z( I)* XW1
  2704.    24 BI( I)= BI( I)* YW1
  2705.    25 WRITE( 6,46)  XW1
  2706. C                                                                       
  2707. C     MOVE STRUCTURE OR REPRODUCE ORIGINAL STRUCTURE IN NEW POSITIONS.  
  2708. C                                                                       
  2709.       GOTO 1
  2710.    26 WRITE( 6,47)  ITG, NS, XW1, YW1, ZW1, XW2, YW2, ZW2, RAD
  2711.       XW1= XW1* TA
  2712.       YW1= YW1* TA
  2713.       ZW1= ZW1* TA
  2714.       CALL MOVE( XW1, YW1, ZW1, XW2, YW2, ZW2, INT( RAD+.5), NS, ITG)
  2715. C                                                                       
  2716. C     READ NUMERICAL GREEN'S FUNCTION TAPE                              
  2717. C                                                                       
  2718.       GOTO 1
  2719.    27 IF( N+ M.EQ.0) GOTO 28
  2720.       WRITE( 6,52) 
  2721.       STOP
  2722.    28 CALL GFIL( ITG)
  2723.       NPSAV= NP
  2724.       MPSAV= MP
  2725.       IPSAV= IPSYM
  2726. C                                                                       
  2727. C     TERMINATE STRUCTURE GEOMETRY INPUT.                               
  2728. C                                                                       
  2729. C***
  2730.       GOTO 1
  2731.    29 IF( NS.EQ.0) GOTO 290
  2732.       IPLP1=1
  2733.       IPLP2=1
  2734. C***
  2735.   290 IX= N1+ M1
  2736.       IF( IX.EQ.0) GOTO 30
  2737.       NP= N
  2738.       MP= M
  2739.       IPSYM=0
  2740.    30 CALL CONECT( ITG)
  2741.       IF( IX.EQ.0) GOTO 31
  2742.       NP= NPSAV
  2743.       MP= MPSAV
  2744.       IPSYM= IPSAV
  2745.    31 IF( N+ M.GT. LD) GOTO 37
  2746.       IF( N.EQ.0) GOTO 33
  2747.       WRITE( 6,53) 
  2748.       WRITE( 6,54) 
  2749.       DO 32  I=1, N
  2750.       XW1= X2( I)- X( I)
  2751.       YW1= Y2( I)- Y( I)
  2752.       ZW1= Z2( I)- Z( I)
  2753.       X( I)=( X( I)+ X2( I))*.5
  2754.       Y( I)=( Y( I)+ Y2( I))*.5
  2755.       Z( I)=( Z( I)+ Z2( I))*.5
  2756.       XW2= XW1* XW1+ YW1* YW1+ ZW1* ZW1
  2757.       YW2= SQRT( XW2)
  2758.       YW2=( XW2/ YW2+ YW2)*.5
  2759.       SI( I)= YW2
  2760.       CAB( I)= XW1/ YW2
  2761.       SAB( I)= YW1/ YW2
  2762.       XW2= ZW1/ YW2
  2763.       IF( XW2.GT.1.) XW2=1.
  2764.       IF( XW2.LT.-1.) XW2=-1.
  2765.       SALP( I)= XW2
  2766.       XW2= ASIN( XW2)* TD
  2767.       YW2= ATGN2( YW1, XW1)* TD
  2768. C***
  2769.       WRITE( 6,55)  I, X( I), Y( I), Z( I), SI( I), XW2, YW2, BI( I), 
  2770.      &ICON1( I), I, ICON2( I), ITAG( I)
  2771.       IF( IPLP1.NE.1) GOTO 320
  2772.       WRITE( 8,*)  X( I), Y( I), Z( I), SI( I), XW2, YW2, BI( I), ICON1
  2773.      &( I), I, ICON2( I)
  2774. C***
  2775.   320 CONTINUE
  2776.       IF( SI( I).GT.1.D-20.AND. BI( I).GT.0.) GOTO 32
  2777.       WRITE( 6,56) 
  2778.       STOP
  2779.    32 CONTINUE
  2780.    33 IF( M.EQ.0) GOTO 35
  2781.       WRITE( 6,57) 
  2782.       J= LD+1
  2783.       DO 34  I=1, M
  2784.       J= J-1
  2785.       XW1=( T1Y( J)* T2Z( J)- T1Z( J)* T2Y( J))* SALP( J)
  2786.       YW1=( T1Z( J)* T2X( J)- T1X( J)* T2Z( J))* SALP( J)
  2787.       ZW1=( T1X( J)* T2Y( J)- T1Y( J)* T2X( J))* SALP( J)
  2788.       WRITE( 6,58)  I, X( J), Y( J), Z( J), XW1, YW1, ZW1, BI( J), T1X(
  2789.      & J), T1Y( J), T1Z( J), T2X( J), T2Y( J), T2Z( J)
  2790.    34 CONTINUE
  2791.    35 RETURN
  2792.    36 WRITE( 6,48) 
  2793.       WRITE( 6,49)  GM, ITG, NS, XW1, YW1, ZW1, XW2, YW2, ZW2, RAD
  2794.       STOP
  2795.    37 WRITE( 6,50) 
  2796. C                                                                       
  2797.       STOP
  2798.    38 FORMAT(1X,I5,2X,'ARC RADIUS =',F9.5,2X,'FROM',F8.3,' TO',F8.3,
  2799.      &' DEGREES',11X,F11.5,2X,I5,4X,I5,1X,I5,3X,I5)
  2800.    39 FORMAT(6X,3F11.5,1X,3F11.5)
  2801.    40 FORMAT(////,33X,'- - - STRUCTURE SPECIFICATION - - -',//,37X,
  2802.      &'COORDINATES MUST BE INPUT IN',/,37X,
  2803.      &'METERS OR BE SCALED TO METERS',/,37X,
  2804.      &'BEFORE STRUCTURE INPUT IS ENDED',//)
  2805.    41 FORMAT(2X,'WIRE',79X,'NO. OF',4X,'FIRST',2X,'LAST',5X,'TAG',/,2X,
  2806.      &'NO.',8X,'X1',9X,'Y1',9X,'Z1',10X,'X2',9X,'Y2',9X,'Z2',6X,
  2807.      &'RADIUS',3X,'SEG.',5X,'SEG.',3X,'SEG.',5X,'NO.')
  2808.    42 FORMAT(A2, I3, I5, 7F10.5)
  2809.    43 FORMAT(1X,I5,3F11.5,1X,4F11.5,2X,I5,4X,I5,1X,I5,3X,I5)
  2810.    44 FORMAT(6X,'STRUCTURE REFLECTED ALONG THE AXES',3(1X,A1),'.  TA',
  2811.      &'GS INCREMENTED BY',I5)
  2812.    45 FORMAT(6X,'STRUCTURE ROTATED ABOUT Z-AXIS',I3,' TIMES.  LABELS',
  2813.      &' INCREMENTED BY',I5)
  2814.    46 FORMAT(6X,'STRUCTURE SCALED BY FACTOR',F10.5)
  2815.    47 FORMAT(6X,'THE STRUCTURE HAS BEEN MOVED, MOVE DATA CARD IS -/6X',
  2816.      &I3,I5,7F10.5)
  2817.    48 FORMAT(' GEOMETRY DATA CARD ERROR')
  2818.    49 FORMAT(1X,A2,I3,I5,7F10.5)
  2819.    50 FORMAT(' NUMBER OF WIRE SEGMENTS AND SURFACE PATCHES EXCEEDS DI',
  2820.      &'MENSION LIMIT.')
  2821.    51 FORMAT(1X,I5,A1,F10.5,2F11.5,1X,3F11.5)
  2822.    52 FORMAT(' ERROR - GF MUST BE FIRST GEOMETRY DATA CARD')
  2823.    53 FORMAT(////33X,'- - - - SEGMENTATION DATA - - - -',//,40X,'COO',
  2824.      &'RDINATES IN METERS',//,25X,
  2825.      &'I+ AND I- INDICATE THE SEGMENTS BEFORE AND AFTER I',//)
  2826.    54 FORMAT(2X,'SEG.',3X,'COORDINATES OF SEG. CENTER',5X,'SEG.',5X,
  2827.      &'ORIENTATION ANGLES',4X,'WIRE',4X,'CONNECTION DATA',3X,'TAG',/,2X
  2828.      &,'NO.',7X,'X',9X,'Y',9X,'Z',7X,'LENGTH',5X,'ALPHA',5X,'BETA',6X,
  2829.      &'RADIUS',4X,'I-',3X,'I',4X,'I+',4X,'NO.')
  2830.    55 FORMAT(1X,I5,4F10.5,1X,3F10.5,1X,3I5,2X,I5)
  2831.    56 FORMAT(' SEGMENT DATA ERROR')
  2832.    57 FORMAT(////,44X,'- - - SURFACE PATCH DATA - - -',//,49X,'COORD',
  2833.      &'INATES IN METERS',//,1X,'PATCH',5X,'COORD. OF PATCH CENTER',7X,
  2834.      &'UNIT NORMAL VECTOR',6X,'PATCH',12X,
  2835.      &'COMPONENTS OF UNIT TANGENT V''ECTORS',/,2X,'NO.',6X,'X',9X,'Y',9
  2836.      &X,'Z',9X,'X',7X,'Y',7X,'Z',7X,'AREA',7X,'X1',6X,'Y1',6X,'Z1',7X,
  2837.      &'X2',6X,'Y2',6X,'Z2')
  2838.    58 FORMAT(1X,I4,3F10.5,1X,3F8.4,F10.5,1X,3F8.4,1X,3F8.4)
  2839.    59 FORMAT(1X,I5,A1,F10.5,2F11.5,1X,3F11.5,5X,'SURFACE -',I4,' BY',I3
  2840.      &,' PATCHES')
  2841.    60 FORMAT(' PATCH DATA ERROR')
  2842.    61 FORMAT(9X,'ABOVE WIRE IS TAPERED.  SEG. LENGTH RATIO =',F9.5,/,33
  2843.      &X,'RADIUS FROM',F9.5,' TO',F9.5)
  2844.       END
  2845. C ***
  2846. C     DOUBLE PRECISION 6/4/85
  2847. C
  2848.       FUNCTION DB10( X)
  2849. C ***
  2850. C                                                                       
  2851. C     FUNCTION DB-- RETURNS DB FOR MAGNITUDE (FIELD) OR MAG**2 (POWER) I
  2852. C                                                                       
  2853.       IMPLICIT REAL (A-H,O-Z)
  2854.       F=10.
  2855.       GOTO 1
  2856.       ENTRY DB20 (x)
  2857.       F=20.
  2858.     1 IF( X.LT.1.D-20) GOTO 2
  2859.       DB10= F* LOG10( X)
  2860.       RETURN
  2861.     2 DB10=-999.99
  2862.       RETURN
  2863.       END
  2864. C ***
  2865. C     DOUBLE PRECISION 6/4/85
  2866. C
  2867.       SUBROUTINE EFLD( XI, YI, ZI, AI, IJ)
  2868. C ***
  2869.       IMPLICIT REAL (A-H,O-Z)
  2870. C                                                                       
  2871. C     COMPUTE NEAR E FIELDS OF A SEGMENT WITH SINE, COSINE, AND         
  2872. C     CONSTANT CURRENTS.  GROUND EFFECT INCLUDED.                       
  2873. C                                                                       
  2874.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  2875.       COMPLEX  TXK, TYK, TZK, TXS, TYS, TZS, TXC, TYC, TZC, EXK, EYK
  2876.      &, EZK, EXS, EYS, EZS, EXC, EYC, EZC, EPX, EPY, ZRATI, REFS, REFPS
  2877.      &, ZRSIN, ZRATX, T1, ZSCRN, ZRATI2, TEZS, TERS, TEZC, TERC, TEZK, 
  2878.      &TERK, EGND, FRATI
  2879.       COMMON  /DATAJ/ S, B, XJ, YJ, ZJ, CABJ, SABJ, SALPJ, EXK, EYK, 
  2880.      &EZK, EXS, EYS, EZS, EXC, EYC, EZC, RKH, IEXK, IND1, INDD1, IND2, 
  2881.      &INDD2, IPGND
  2882.       COMMON  /GND/ ZRATI, ZRATI2, FRATI, CL, CH, SCRWL, SCRWR, NRADL, 
  2883.      &KSYMP, IFAR, IPERF, T1, T2
  2884.       COMMON  /INCOM/ XO, YO, ZO, SN, XSN, YSN, ISNOR
  2885.       DIMENSION  EGND(9)
  2886.       EQUIVALENCE(EGND(1),TXK),(EGND(2),TYK),(EGND(3),TZK),(EGND(4),TXS
  2887.      &),(EGND(5),TYS),(EGND(6),TZS),(EGND(7),TXC),(EGND(8),TYC),(EGND(9
  2888.      &),TZC)
  2889.       DATA   ETA/376.73/, PI/3.141592654D+0/, TP/6.283185308D+0/
  2890.       XIJ= XI- XJ
  2891.       YIJ= YI- YJ
  2892.       IJX= IJ
  2893.       RFL=-1.
  2894.       DO 12  IP=1, KSYMP
  2895.       IF( IP.EQ.2) IJX=1
  2896.       RFL=- RFL
  2897.       SALPR= SALPJ* RFL
  2898.       ZIJ= ZI- RFL* ZJ
  2899.       ZP= XIJ* CABJ+ YIJ* SABJ+ ZIJ* SALPR
  2900.       RHOX= XIJ- CABJ* ZP
  2901.       RHOY= YIJ- SABJ* ZP
  2902.       RHOZ= ZIJ- SALPR* ZP
  2903.       RH= SQRT( RHOX* RHOX+ RHOY* RHOY+ RHOZ* RHOZ+ AI* AI)
  2904.       IF( RH.GT.1.D-10) GOTO 1
  2905.       RHOX=0.
  2906.       RHOY=0.
  2907.       RHOZ=0.
  2908.       GOTO 2
  2909.     1 RHOX= RHOX/ RH
  2910.       RHOY= RHOY/ RH
  2911.       RHOZ= RHOZ/ RH
  2912.     2 R= SQRT( ZP* ZP+ RH* RH)
  2913. C                                                                       
  2914. C     LUMPED CURRENT ELEMENT APPROX. FOR LARGE SEPARATIONS              
  2915. C                                                                       
  2916.       IF( R.LT. RKH) GOTO 3
  2917.       RMAG= TP* R
  2918.       CTH= ZP/ R
  2919.       PX= RH/ R
  2920.       TXK= CMPLX( COS( RMAG),- SIN( RMAG))
  2921.       PY= TP* R* R
  2922.       TYK= ETA* CTH* TXK* CMPLX(1.D+0,-1.D+0/ RMAG)/ PY
  2923.       TZK= ETA* PX* TXK* CMPLX(1.D+0, RMAG-1.D+0/ RMAG)/(2.* PY)
  2924.       TEZK= TYK* CTH- TZK* PX
  2925.       TERK= TYK* PX+ TZK* CTH
  2926.       RMAG= SIN( PI* S)/ PI
  2927.       TEZC= TEZK* RMAG
  2928.       TERC= TERK* RMAG
  2929.       TEZK= TEZK* S
  2930.       TERK= TERK* S
  2931.       TXS=(0.,0.)
  2932.       TYS=(0.,0.)
  2933.       TZS=(0.,0.)
  2934.       GOTO 6
  2935. C                                                                       
  2936. C     EKSC FOR THIN WIRE APPROX. OR EKSCX FOR EXTENDED T.W. APPROX.     
  2937. C                                                                       
  2938.     3 IF( IEXK.EQ.1) GOTO 4
  2939.       CALL EKSC( S, ZP, RH, TP, IJX, TEZS, TERS, TEZC, TERC, TEZK, TERK
  2940.      &)
  2941.       GOTO 5
  2942.     4 CALL EKSCX( B, S, ZP, RH, TP, IJX, IND1, IND2, TEZS, TERS, TEZC, 
  2943.      &TERC, TEZK, TERK)
  2944.     5 TXS= TEZS* CABJ+ TERS* RHOX
  2945.       TYS= TEZS* SABJ+ TERS* RHOY
  2946.       TZS= TEZS* SALPR+ TERS* RHOZ
  2947.     6 TXK= TEZK* CABJ+ TERK* RHOX
  2948.       TYK= TEZK* SABJ+ TERK* RHOY
  2949.       TZK= TEZK* SALPR+ TERK* RHOZ
  2950.       TXC= TEZC* CABJ+ TERC* RHOX
  2951.       TYC= TEZC* SABJ+ TERC* RHOY
  2952.       TZC= TEZC* SALPR+ TERC* RHOZ
  2953.       IF( IP.NE.2) GOTO 11
  2954.       IF( IPERF.GT.0) GOTO 10
  2955.       ZRATX= ZRATI
  2956.       RMAG= R
  2957. C                                                                       
  2958. C     SET PARAMETERS FOR RADIAL WIRE GROUND SCREEN.                     
  2959. C                                                                       
  2960.       XYMAG= SQRT( XIJ* XIJ+ YIJ* YIJ)
  2961.       IF( NRADL.EQ.0) GOTO 7
  2962.       XSPEC=( XI* ZJ+ ZI* XJ)/( ZI+ ZJ)
  2963.       YSPEC=( YI* ZJ+ ZI* YJ)/( ZI+ ZJ)
  2964.       RHOSPC= SQRT( XSPEC* XSPEC+ YSPEC* YSPEC+ T2* T2)
  2965.       IF( RHOSPC.GT. SCRWL) GOTO 7
  2966.       ZSCRN= T1* RHOSPC* LOG( RHOSPC/ T2)
  2967.       ZRATX=( ZSCRN* ZRATI)/( ETA* ZRATI+ ZSCRN)
  2968. C                                                                       
  2969. C     CALCULATION OF REFLECTION COEFFICIENTS WHEN GROUND IS SPECIFIED.  
  2970. C                                                                       
  2971.     7 IF( XYMAG.GT.1.D-6) GOTO 8
  2972.       PX=0.
  2973.       PY=0.
  2974.       CTH=1.
  2975.       ZRSIN=(1.,0.)
  2976.       GOTO 9
  2977.     8 PX=- YIJ/ XYMAG
  2978.       PY= XIJ/ XYMAG
  2979.       CTH= ZIJ/ RMAG
  2980.       ZRSIN= SQRT(1.- ZRATX* ZRATX*(1.- CTH* CTH))
  2981.     9 REFS=( CTH- ZRATX* ZRSIN)/( CTH+ ZRATX* ZRSIN)
  2982.       REFPS=-( ZRATX* CTH- ZRSIN)/( ZRATX* CTH+ ZRSIN)
  2983.       REFPS= REFPS- REFS
  2984.       EPY= PX* TXK+ PY* TYK
  2985.       EPX= PX* EPY
  2986.       EPY= PY* EPY
  2987.       TXK= REFS* TXK+ REFPS* EPX
  2988.       TYK= REFS* TYK+ REFPS* EPY
  2989.       TZK= REFS* TZK
  2990.       EPY= PX* TXS+ PY* TYS
  2991.       EPX= PX* EPY
  2992.       EPY= PY* EPY
  2993.       TXS= REFS* TXS+ REFPS* EPX
  2994.       TYS= REFS* TYS+ REFPS* EPY
  2995.       TZS= REFS* TZS
  2996.       EPY= PX* TXC+ PY* TYC
  2997.       EPX= PX* EPY
  2998.       EPY= PY* EPY
  2999.       TXC= REFS* TXC+ REFPS* EPX
  3000.       TYC= REFS* TYC+ REFPS* EPY
  3001.       TZC= REFS* TZC
  3002.    10 EXK= EXK- TXK* FRATI
  3003.       EYK= EYK- TYK* FRATI
  3004.       EZK= EZK- TZK* FRATI
  3005.       EXS= EXS- TXS* FRATI
  3006.       EYS= EYS- TYS* FRATI
  3007.       EZS= EZS- TZS* FRATI
  3008.       EXC= EXC- TXC* FRATI
  3009.       EYC= EYC- TYC* FRATI
  3010.       EZC= EZC- TZC* FRATI
  3011.       GOTO 12
  3012.    11 EXK= TXK
  3013.       EYK= TYK
  3014.       EZK= TZK
  3015.       EXS= TXS
  3016.       EYS= TYS
  3017.       EZS= TZS
  3018.       EXC= TXC
  3019.       EYC= TYC
  3020.       EZC= TZC
  3021.    12 CONTINUE
  3022.       IF( IPERF.EQ.2) GOTO 13
  3023. C                                                                       
  3024. C     FIELD DUE TO GROUND USING SOMMERFELD/NORTON                       
  3025. C                                                                       
  3026.       RETURN
  3027.    13 SN= SQRT( CABJ* CABJ+ SABJ* SABJ)
  3028.       IF( SN.LT.1.D-5) GOTO 14
  3029.       XSN= CABJ/ SN
  3030.       YSN= SABJ/ SN
  3031.       GOTO 15
  3032.    14 SN=0.
  3033.       XSN=1.
  3034. C                                                                       
  3035. C     DISPLACE OBSERVATION POINT FOR THIN WIRE APPROXIMATION            
  3036. C                                                                       
  3037.       YSN=0.
  3038.    15 ZIJ= ZI+ ZJ
  3039.       SALPR=- SALPJ
  3040.       RHOX= SABJ* ZIJ- SALPR* YIJ
  3041.       RHOY= SALPR* XIJ- CABJ* ZIJ
  3042.       RHOZ= CABJ* YIJ- SABJ* XIJ
  3043.       RH= RHOX* RHOX+ RHOY* RHOY+ RHOZ* RHOZ
  3044.       IF( RH.GT.1.D-10) GOTO 16
  3045.       XO= XI- AI* YSN
  3046.       YO= YI+ AI* XSN
  3047.       ZO= ZI
  3048.       GOTO 17
  3049.    16 RH= AI/ SQRT( RH)
  3050.       IF( RHOZ.LT.0.) RH=- RH
  3051.       XO= XI+ RH* RHOX
  3052.       YO= YI+ RH* RHOY
  3053.       ZO= ZI+ RH* RHOZ
  3054.    17 R= XIJ* XIJ+ YIJ* YIJ+ ZIJ* ZIJ
  3055. C                                                                       
  3056. C     FIELD FROM INTERPOLATION IS INTEGRATED OVER SEGMENT               
  3057. C                                                                       
  3058.       IF( R.GT..95) GOTO 18
  3059.       ISNOR=1
  3060.       DMIN= EXK* CONJG( EXK)+ EYK* CONJG( EYK)+ EZK* CONJG( EZK)
  3061.       DMIN=.01* SQRT( DMIN)
  3062.       SHAF=.5* S
  3063.       CALL ROM2(- SHAF, SHAF, EGND, DMIN)
  3064. C                                                                       
  3065. C     NORTON FIELD EQUATIONS AND LUMPED CURRENT ELEMENT APPROXIMATION   
  3066. C                                                                       
  3067.       GOTO 19
  3068.    18 ISNOR=2
  3069.       CALL SFLDS(0., EGND)
  3070.       GOTO 22
  3071.    19 ZP= XIJ* CABJ+ YIJ* SABJ+ ZIJ* SALPR
  3072.       RH= R- ZP* ZP
  3073.       IF( RH.GT.1.D-10) GOTO 20
  3074.       DMIN=0.
  3075.       GOTO 21
  3076.    20 DMIN= SQRT( RH/( RH+ AI* AI))
  3077.    21 IF( DMIN.GT..95) GOTO 22
  3078.       PX=1.- DMIN
  3079.       TERK=( TXK* CABJ+ TYK* SABJ+ TZK* SALPR)* PX
  3080.       TXK= DMIN* TXK+ TERK* CABJ
  3081.       TYK= DMIN* TYK+ TERK* SABJ
  3082.       TZK= DMIN* TZK+ TERK* SALPR
  3083.       TERS=( TXS* CABJ+ TYS* SABJ+ TZS* SALPR)* PX
  3084.       TXS= DMIN* TXS+ TERS* CABJ
  3085.       TYS= DMIN* TYS+ TERS* SABJ
  3086.       TZS= DMIN* TZS+ TERS* SALPR
  3087.       TERC=( TXC* CABJ+ TYC* SABJ+ TZC* SALPR)* PX
  3088.       TXC= DMIN* TXC+ TERC* CABJ
  3089.       TYC= DMIN* TYC+ TERC* SABJ
  3090.       TZC= DMIN* TZC+ TERC* SALPR
  3091.    22 EXK= EXK+ TXK
  3092.       EYK= EYK+ TYK
  3093.       EZK= EZK+ TZK
  3094.       EXS= EXS+ TXS
  3095.       EYS= EYS+ TYS
  3096.       EZS= EZS+ TZS
  3097.       EXC= EXC+ TXC
  3098.       EYC= EYC+ TYC
  3099.       EZC= EZC+ TZC
  3100.       RETURN
  3101.       END
  3102. C ***
  3103. C     DOUBLE PRECISION 6/4/85
  3104. C
  3105.       SUBROUTINE EKSC( S, Z, RH, XK, IJ, EZS, ERS, EZC, ERC, EZK, ERK)
  3106. C ***
  3107.       IMPLICIT REAL (A-H,O-Z)
  3108. C     COMPUTE E FIELD OF SINE, COSINE, AND CONSTANT CURRENT FILAMENTS BY
  3109. C     THIN WIRE APPROXIMATION.                                          
  3110.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  3111.       COMPLEX  CON, GZ1, GZ2, GP1, GP2, GZP1, GZP2, EZS, ERS, EZC, 
  3112.      &ERC, EZK, ERK
  3113.       COMMON  /TMI/ ZPK, RKB2, IJX
  3114.       DIMENSION  CONX(2)
  3115.       EQUIVALENCE(CONX,CON)
  3116.       DATA   CONX/0.,4.771341189D+0/
  3117.       IJX= IJ
  3118.       ZPK= XK* Z
  3119.       RHK= XK* RH
  3120.       RKB2= RHK* RHK
  3121.       SH=.5* S
  3122.       SHK= XK* SH
  3123.       SS= SIN( SHK)
  3124.       CS= COS( SHK)
  3125.       Z2= SH- Z
  3126.       Z1=-( SH+ Z)
  3127.       CALL GX( Z1, RH, XK, GZ1, GP1)
  3128.       CALL GX( Z2, RH, XK, GZ2, GP2)
  3129.       GZP1= GP1* Z1
  3130.       GZP2= GP2* Z2
  3131.       EZS= CON*(( GZ2- GZ1)* CS* XK-( GZP2+ GZP1)* SS)
  3132.       EZC=- CON*(( GZ2+ GZ1)* SS* XK+( GZP2- GZP1)* CS)
  3133.       ERK= CON*( GP2- GP1)* RH
  3134.       CALL INTX(- SHK, SHK, RHK, IJ, CINT, SINT)
  3135.       EZK=- CON*( GZP2- GZP1+ XK* XK* CMPLX( CINT,- SINT))
  3136.       GZP1= GZP1* Z1
  3137.       GZP2= GZP2* Z2
  3138.       IF( RH.LT.1.D-10) GOTO 1
  3139.       ERS=- CON*(( GZP2+ GZP1+ GZ2+ GZ1)* SS-( Z2* GZ2- Z1* GZ1)* CS* 
  3140.      &XK)/ RH
  3141.       ERC=- CON*(( GZP2- GZP1+ GZ2- GZ1)* CS+( Z2* GZ2+ Z1* GZ1)* SS* 
  3142.      &XK)/ RH
  3143.       RETURN
  3144.     1 ERS=(0.,0.)
  3145.       ERC=(0.,0.)
  3146.       RETURN
  3147.       END
  3148. C ***
  3149. C     DOUBLE PRECISION 6/4/85
  3150. C
  3151.       SUBROUTINE EKSCX( BX, S, Z, RHX, XK, IJ, INX1, INX2, EZS, ERS, 
  3152.      &EZC, ERC, EZK, ERK)
  3153. C ***
  3154. C     COMPUTE E FIELD OF SINE, COSINE, AND CONSTANT CURRENT FILAMENTS BY
  3155. C     EXTENDED THIN WIRE APPROXIMATION.                                 
  3156.       IMPLICIT REAL (A-H,O-Z)
  3157.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  3158.       COMPLEX  CON, GZ1, GZ2, GZP1, GZP2, GR1, GR2, GRP1, GRP2, EZS,
  3159.      & EZC, ERS, ERC, GRK1, GRK2, EZK, ERK, GZZ1, GZZ2
  3160.       COMMON  /TMI/ ZPK, RKB2, IJX
  3161.       DIMENSION  CONX(2)
  3162.       EQUIVALENCE(CONX,CON)
  3163.       DATA   CONX/0.,4.771341189D+0/
  3164.       IF( RHX.LT. BX) GOTO 1
  3165.       RH= RHX
  3166.       B= BX
  3167.       IRA=0
  3168.       GOTO 2
  3169.     1 RH= BX
  3170.       B= RHX
  3171.       IRA=1
  3172.     2 SH=.5* S
  3173.       IJX= IJ
  3174.       ZPK= XK* Z
  3175.       RHK= XK* RH
  3176.       RKB2= RHK* RHK
  3177.       SHK= XK* SH
  3178.       SS= SIN( SHK)
  3179.       CS= COS( SHK)
  3180.       Z2= SH- Z
  3181.       Z1=-( SH+ Z)
  3182.       A2= B* B
  3183.       IF( INX1.EQ.2) GOTO 3
  3184.       CALL GXX( Z1, RH, B, A2, XK, IRA, GZ1, GZP1, GR1, GRP1, GRK1, 
  3185.      &GZZ1)
  3186.       GOTO 4
  3187.     3 CALL GX( Z1, RHX, XK, GZ1, GRK1)
  3188.       GZP1= GRK1* Z1
  3189.       GR1= GZ1/ RHX
  3190.       GRP1= GZP1/ RHX
  3191.       GRK1= GRK1* RHX
  3192.       GZZ1=(0.,0.)
  3193.     4 IF( INX2.EQ.2) GOTO 5
  3194.       CALL GXX( Z2, RH, B, A2, XK, IRA, GZ2, GZP2, GR2, GRP2, GRK2, 
  3195.      &GZZ2)
  3196.       GOTO 6
  3197.     5 CALL GX( Z2, RHX, XK, GZ2, GRK2)
  3198.       GZP2= GRK2* Z2
  3199.       GR2= GZ2/ RHX
  3200.       GRP2= GZP2/ RHX
  3201.       GRK2= GRK2* RHX
  3202.       GZZ2=(0.,0.)
  3203.     6 EZS= CON*(( GZ2- GZ1)* CS* XK-( GZP2+ GZP1)* SS)
  3204.       EZC=- CON*(( GZ2+ GZ1)* SS* XK+( GZP2- GZP1)* CS)
  3205.       ERS=- CON*(( Z2* GRP2+ Z1* GRP1+ GR2+ GR1)* SS-( Z2* GR2- Z1* GR1
  3206.      &)* CS* XK)
  3207.       ERC=- CON*(( Z2* GRP2- Z1* GRP1+ GR2- GR1)* CS+( Z2* GR2+ Z1* GR1
  3208.      &)* SS* XK)
  3209.       ERK= CON*( GRK2- GRK1)
  3210.       CALL INTX(- SHK, SHK, RHK, IJ, CINT, SINT)
  3211.       BK= B* XK
  3212.       BK2= BK* BK*.25
  3213.       EZK=- CON*( GZP2- GZP1+ XK* XK*(1.- BK2)* CMPLX( CINT,- SINT)- 
  3214.      &BK2*( GZZ2- GZZ1))
  3215.       RETURN
  3216.       END
  3217. C ***
  3218. C     DOUBLE PRECISION 6/4/85
  3219. C
  3220. C      LOGICAL FUNCTION ENF( NUNIT)
  3221. C ***
  3222. C*********** THIS ROUTINE NOT USED ON VAX **************
  3223. C      IF (EOF,NUNIT) 1,2                                                
  3224. C      IMPLICIT REAL (A-H,O-Z)
  3225. C    1 ENF=.TRUE.
  3226. C      RETURN
  3227. C    2 ENF=.FALSE.
  3228. C      RETURN
  3229. C      END
  3230. C ***
  3231. C     DOUBLE PRECISION 6/4/85
  3232. C
  3233. C     IMPLICIT REAL(A-H,O-Z)
  3234. C ***
  3235.       SUBROUTINE ERROR
  3236.       IMPLICIT INTEGER (A-Z)
  3237.       CHARACTER   MSG*80
  3238. C      CALL SYS$GETMSG(%VAL(RMSSTS),MSGLEN,MSG,,,)
  3239. C      CALL ERRSNS( FNUM, RMSSTS, RMSSTV, IUNIT, CNDVAL)
  3240.       CALL STR0PC( MSG, MSG)
  3241.       IND= INDEX( MSG,',')
  3242.       PRINT1 , MSG( IND+2: MSGLEN)
  3243.     1 FORMAT(//,'  ****  ERROR  ****   ',//,5X,A,//)
  3244.       RETURN
  3245.       END
  3246. C ***
  3247. C     DOUBLE PRECISION 6/4/85
  3248. C
  3249.       SUBROUTINE ETMNS( P1, P2, P3, P4, P5, P6, IPR, E)
  3250.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  3251. C ***
  3252. C                                                                       
  3253. C     ETMNS FILLS THE ARRAY E WITH THE NEGATIVE OF THE ELECTRIC FIELD   
  3254. C     INCIDENT ON THE STRUCTURE.  E IS THE RIGHT HAND SIDE OF THE MATRIX
  3255. C     EQUATION.                                                         
  3256. C                                                                       
  3257.       IMPLICIT REAL (A-H,O-Z)
  3258.       COMPLEX  E, CX, CY, CZ, VSANT, TX1, TX2, ER, ET, EZH, ERH, VQD
  3259.      &, VQDS, ZRATI, ZRATI2, RRV, RRH, T1, TT1, TT2, FRATI
  3260.       COMMON  /DATA/ LD, N1, N2, N, NP, M1, M2, M, MP, X( NM), Y( NM), 
  3261.      &Z( NM), SI( NM), BI( NM), ALP( NM), BET( NM), ICON1( N2M), ICON2(
  3262.      & N2M), ITAG( N2M), ICONX( NM), WLAM, IPSYM
  3263.       COMMON  /ANGL/ SALP( NM)
  3264.       COMMON  /VSORC/ VQD(30), VSANT(30), VQDS(30), IVQD(30), ISANT(30)
  3265.      &, IQDS(30), NVQD, NSANT, NQDS
  3266.       COMMON  /GND/ ZRATI, ZRATI2, FRATI, CL, CH, SCRWL, SCRWR, NRADL, 
  3267.      &KSYMP, IFAR, IPERF, T1, T2
  3268.       DIMENSION  CAB(1), SAB(1), E( N2M)
  3269.       DIMENSION  T1X(1), T1Y(1), T1Z(1), T2X(1), T2Y(1), T2Z(1)
  3270.       EQUIVALENCE(CAB,ALP),(SAB,BET)
  3271.       EQUIVALENCE(T1X,SI),(T1Y,ALP),(T1Z,BET),(T2X,ICON1),(T2Y,ICON2),(
  3272.      &T2Z,ITAG)
  3273.       DATA   TP/6.283185308D+0/, RETA/2.654420938D-3/
  3274.       NEQ= N+2* M
  3275.       NQDS=0
  3276. C                                                                       
  3277. C     APPLIED FIELD OF VOLTAGE SOURCES FOR TRANSMITTING CASE            
  3278. C                                                                       
  3279.       IF( IPR.GT.0.AND. IPR.NE.5) GOTO 5
  3280.       DO 1  I=1, NEQ
  3281.     1 E( I)=(0.,0.)
  3282.       IF( NSANT.EQ.0) GOTO 3
  3283.       DO 2  I=1, NSANT
  3284.       IS= ISANT( I)
  3285.     2 E( IS)=- VSANT( I)/( SI( IS)* WLAM)
  3286.     3 IF( NVQD.EQ.0) RETURN
  3287.       DO 4  I=1, NVQD
  3288.       IS= IVQD( I)
  3289.     4 CALL QDSRC( IS, VQD( I), E)
  3290.       RETURN
  3291. C                                                                       
  3292. C     INCIDENT PLANE WAVE, LINEARLY POLARIZED.                          
  3293. C                                                                       
  3294.     5 IF( IPR.GT.3) GOTO 19
  3295.       CTH= COS( P1)
  3296.       STH= SIN( P1)
  3297.       CPH= COS( P2)
  3298.       SPH= SIN( P2)
  3299.       CET= COS( P3)
  3300.       SET= SIN( P3)
  3301.       PX= CTH* CPH* CET- SPH* SET
  3302.       PY= CTH* SPH* CET+ CPH* SET
  3303.       PZ=- STH* CET
  3304.       WX=- STH* CPH
  3305.       WY=- STH* SPH
  3306.       WZ=- CTH
  3307.       QX= WY* PZ- WZ* PY
  3308.       QY= WZ* PX- WX* PZ
  3309.       QZ= WX* PY- WY* PX
  3310.       IF( KSYMP.EQ.1) GOTO 7
  3311.       IF( IPERF.EQ.1) GOTO 6
  3312.       RRV= SQRT(1.- ZRATI* ZRATI* STH* STH)
  3313.       RRH= ZRATI* CTH
  3314.       RRH=( RRH- RRV)/( RRH+ RRV)
  3315.       RRV= ZRATI* RRV
  3316.       RRV=-( CTH- RRV)/( CTH+ RRV)
  3317.       GOTO 7
  3318.     6 RRV=-(1.,0.)
  3319.       RRH=-(1.,0.)
  3320.     7 IF( IPR.GT.1) GOTO 13
  3321.       IF( N.EQ.0) GOTO 10
  3322.       DO 8  I=1, N
  3323.       ARG=- TP*( WX* X( I)+ WY* Y( I)+ WZ* Z( I))
  3324.     8 E( I)=-( PX* CAB( I)+ PY* SAB( I)+ PZ* SALP( I))* CMPLX( COS( ARG
  3325.      &), SIN( ARG))
  3326.       IF( KSYMP.EQ.1) GOTO 10
  3327.       TT1=( PY* CPH- PX* SPH)*( RRH- RRV)
  3328.       CX= RRV* PX- TT1* SPH
  3329.       CY= RRV* PY+ TT1* CPH
  3330.       CZ=- RRV* PZ
  3331.       DO 9  I=1, N
  3332.       ARG=- TP*( WX* X( I)+ WY* Y( I)- WZ* Z( I))
  3333.     9 E( I)= E( I)-( CX* CAB( I)+ CY* SAB( I)+ CZ* SALP( I))* CMPLX( 
  3334.      &COS( ARG), SIN( ARG))
  3335.    10 IF( M.EQ.0) RETURN
  3336.       I= LD+1
  3337.       I1= N-1
  3338.       DO 11  IS=1, M
  3339.       I= I-1
  3340.       I1= I1+2
  3341.       I2= I1+1
  3342.       ARG=- TP*( WX* X( I)+ WY* Y( I)+ WZ* Z( I))
  3343.       TT1= CMPLX( COS( ARG), SIN( ARG))* SALP( I)* RETA
  3344.       E( I2)=( QX* T1X( I)+ QY* T1Y( I)+ QZ* T1Z( I))* TT1
  3345.    11 E( I1)=( QX* T2X( I)+ QY* T2Y( I)+ QZ* T2Z( I))* TT1
  3346.       IF( KSYMP.EQ.1) RETURN
  3347.       TT1=( QY* CPH- QX* SPH)*( RRV- RRH)
  3348.       CX=-( RRH* QX- TT1* SPH)
  3349.       CY=-( RRH* QY+ TT1* CPH)
  3350.       CZ= RRH* QZ
  3351.       I= LD+1
  3352.       I1= N-1
  3353.       DO 12  IS=1, M
  3354.       I= I-1
  3355.       I1= I1+2
  3356.       I2= I1+1
  3357.       ARG=- TP*( WX* X( I)+ WY* Y( I)- WZ* Z( I))
  3358.       TT1= CMPLX( COS( ARG), SIN( ARG))* SALP( I)* RETA
  3359.       E( I2)= E( I2)+( CX* T1X( I)+ CY* T1Y( I)+ CZ* T1Z( I))* TT1
  3360.    12 E( I1)= E( I1)+( CX* T2X( I)+ CY* T2Y( I)+ CZ* T2Z( I))* TT1
  3361. C                                                                       
  3362. C     INCIDENT PLANE WAVE, ELLIPTIC POLARIZATION.                       
  3363. C                                                                       
  3364.       RETURN
  3365.    13 TT1=-(0.,1.)* P6
  3366.       IF( IPR.EQ.3) TT1=- TT1
  3367.       IF( N.EQ.0) GOTO 16
  3368.       CX= PX+ TT1* QX
  3369.       CY= PY+ TT1* QY
  3370.       CZ= PZ+ TT1* QZ
  3371.       DO 14  I=1, N
  3372.       ARG=- TP*( WX* X( I)+ WY* Y( I)+ WZ* Z( I))
  3373.    14 E( I)=-( CX* CAB( I)+ CY* SAB( I)+ CZ* SALP( I))* CMPLX( COS( ARG
  3374.      &), SIN( ARG))
  3375.       IF( KSYMP.EQ.1) GOTO 16
  3376.       TT2=( CY* CPH- CX* SPH)*( RRH- RRV)
  3377.       CX= RRV* CX- TT2* SPH
  3378.       CY= RRV* CY+ TT2* CPH
  3379.       CZ=- RRV* CZ
  3380.       DO 15  I=1, N
  3381.       ARG=- TP*( WX* X( I)+ WY* Y( I)- WZ* Z( I))
  3382.    15 E( I)= E( I)-( CX* CAB( I)+ CY* SAB( I)+ CZ* SALP( I))* CMPLX( 
  3383.      &COS( ARG), SIN( ARG))
  3384.    16 IF( M.EQ.0) RETURN
  3385.       CX= QX- TT1* PX
  3386.       CY= QY- TT1* PY
  3387.       CZ= QZ- TT1* PZ
  3388.       I= LD+1
  3389.       I1= N-1
  3390.       DO 17  IS=1, M
  3391.       I= I-1
  3392.       I1= I1+2
  3393.       I2= I1+1
  3394.       ARG=- TP*( WX* X( I)+ WY* Y( I)+ WZ* Z( I))
  3395.       TT2= CMPLX( COS( ARG), SIN( ARG))* SALP( I)* RETA
  3396.       E( I2)=( CX* T1X( I)+ CY* T1Y( I)+ CZ* T1Z( I))* TT2
  3397.    17 E( I1)=( CX* T2X( I)+ CY* T2Y( I)+ CZ* T2Z( I))* TT2
  3398.       IF( KSYMP.EQ.1) RETURN
  3399.       TT1=( CY* CPH- CX* SPH)*( RRV- RRH)
  3400.       CX=-( RRH* CX- TT1* SPH)
  3401.       CY=-( RRH* CY+ TT1* CPH)
  3402.       CZ= RRH* CZ
  3403.       I= LD+1
  3404.       I1= N-1
  3405.       DO 18  IS=1, M
  3406.       I= I-1
  3407.       I1= I1+2
  3408.       I2= I1+1
  3409.       ARG=- TP*( WX* X( I)+ WY* Y( I)- WZ* Z( I))
  3410.       TT1= CMPLX( COS( ARG), SIN( ARG))* SALP( I)* RETA
  3411.       E( I2)= E( I2)+( CX* T1X( I)+ CY* T1Y( I)+ CZ* T1Z( I))* TT1
  3412.    18 E( I1)= E( I1)+( CX* T2X( I)+ CY* T2Y( I)+ CZ* T2Z( I))* TT1
  3413. C                                                                       
  3414. C     INCIDENT FIELD OF AN ELEMENTARY CURRENT SOURCE.                   
  3415. C                                                                       
  3416.       RETURN
  3417.    19 WZ= COS( P4)
  3418.       WX= WZ* COS( P5)
  3419.       WY= WZ* SIN( P5)
  3420.       WZ= SIN( P4)
  3421.       DS= P6*59.958
  3422.       DSH= P6/(2.* TP)
  3423.       NPM= N+ M
  3424.       IS= LD+1
  3425.       I1= N-1
  3426.       DO 24  I=1, NPM
  3427.       II= I
  3428.       IF( I.LE. N) GOTO 20
  3429.       IS= IS-1
  3430.       II= IS
  3431.       I1= I1+2
  3432.       I2= I1+1
  3433.    20 PX= X( II)- P1
  3434.       PY= Y( II)- P2
  3435.       PZ= Z( II)- P3
  3436.       RS= PX* PX+ PY* PY+ PZ* PZ
  3437.       IF( RS.LT.1.D-30) GOTO 24
  3438.       R= SQRT( RS)
  3439.       PX= PX/ R
  3440.       PY= PY/ R
  3441.       PZ= PZ/ R
  3442.       CTH= PX* WX+ PY* WY+ PZ* WZ
  3443.       STH= SQRT(1.- CTH* CTH)
  3444.       QX= PX- WX* CTH
  3445.       QY= PY- WY* CTH
  3446.       QZ= PZ- WZ* CTH
  3447.       ARG= SQRT( QX* QX+ QY* QY+ QZ* QZ)
  3448.       IF( ARG.LT.1.D-30) GOTO 21
  3449.       QX= QX/ ARG
  3450.       QY= QY/ ARG
  3451.       QZ= QZ/ ARG
  3452.       GOTO 22
  3453.    21 QX=1.
  3454.       QY=0.
  3455.       QZ=0.
  3456.    22 ARG=- TP* R
  3457.       TT1= CMPLX( COS( ARG), SIN( ARG))
  3458.       IF( I.GT. N) GOTO 23
  3459.       TT2= CMPLX(1.D+0,-1.D+0/( R* TP))/ RS
  3460.       ER= DS* TT1* TT2* CTH
  3461.       ET=.5* DS* TT1*((0.,1.)* TP/ R+ TT2)* STH
  3462.       EZH= ER* CTH- ET* STH
  3463.       ERH= ER* STH+ ET* CTH
  3464.       CX= EZH* WX+ ERH* QX
  3465.       CY= EZH* WY+ ERH* QY
  3466.       CZ= EZH* WZ+ ERH* QZ
  3467.       E( I)=-( CX* CAB( I)+ CY* SAB( I)+ CZ* SALP( I))
  3468.       GOTO 24
  3469.    23 PX= WY* QZ- WZ* QY
  3470.       PY= WZ* QX- WX* QZ
  3471.       PZ= WX* QY- WY* QX
  3472.       TT2= DSH* TT1* CMPLX(1./ R, TP)/ R* STH* SALP( II)
  3473.       CX= TT2* PX
  3474.       CY= TT2* PY
  3475.       CZ= TT2* PZ
  3476.       E( I2)= CX* T1X( II)+ CY* T1Y( II)+ CZ* T1Z( II)
  3477.       E( I1)= CX* T2X( II)+ CY* T2Y( II)+ CZ* T2Z( II)
  3478.    24 CONTINUE
  3479.       RETURN
  3480.       END
  3481. C ***
  3482. C     DOUBLE PRECISION 6/4/85
  3483. C
  3484.       SUBROUTINE FACGF( A, B, C, D, BX, IP, IX, NP, N1, MP, M1, N1C, 
  3485.      &N2C)
  3486. C ***
  3487. C     FACGF COMPUTES AND FACTORS D-C(INV(A)B).                          
  3488.       IMPLICIT REAL (A-H,O-Z)
  3489.       COMPLEX  A, B, C, D, BX, SUM
  3490.       COMMON  /MATPAR/ ICASE, NBLOKS, NPBLK, NLAST, NBLSYM, NPSYM, 
  3491.      &NLSYM, IMAT, ICASX, NBBX, NPBX, NLBX, NBBL, NPBL, NLBL
  3492.       DIMENSION  A(1), B( N1C,1), C( N1C,1), D( N2C,1), BX( N1C,1), IP(
  3493.      &1), IX(1)
  3494.       IF( N2C.EQ.0) RETURN
  3495.       IBFL=14
  3496. C     CONVERT B FROM BLOCKS OF ROWS ON T14 TO BLOCKS OF COL. ON T16     
  3497.       IF( ICASX.LT.3) GOTO 1
  3498.       CALL REBLK( B, C, N1C, NPBX, N2C)
  3499.       IBFL=16
  3500.     1 NPB= NPBL
  3501. C     COMPUTE INV(A)B AND WRITE ON TAPE14                               
  3502.       IF( ICASX.EQ.2) REWIND 14
  3503.       DO 2  IB=1, NBBL
  3504.       IF( IB.EQ. NBBL) NPB= NLBL
  3505.       IF( ICASX.GT.1) READ( IBFL) (( BX( I, J), I=1, N1C), J=1, NPB)
  3506.       CALL SOLVES( A, IP, BX, N1C, NPB, NP, N1, MP, M1,13,13)
  3507.       IF( ICASX.EQ.2) REWIND 14
  3508.       IF( ICASX.GT.1) WRITE( 14) (( BX( I, J), I=1, N1C), J=1, NPB)
  3509.     2 CONTINUE
  3510.       IF( ICASX.EQ.1) GOTO 3
  3511.       REWIND 11
  3512.       REWIND 12
  3513.       REWIND 15
  3514.       REWIND IBFL
  3515. C     COMPUTE D-C(INV(A)B) AND WRITE ON TAPE11                          
  3516.     3 NPC= NPBL
  3517.       DO 8  IC=1, NBBL
  3518.       IF( IC.EQ. NBBL) NPC= NLBL
  3519.       IF( ICASX.EQ.1) GOTO 4
  3520.       READ( 15) (( C( I, J), I=1, N1C), J=1, NPC)
  3521.       READ( 12) (( D( I, J), I=1, N2C), J=1, NPC)
  3522.       REWIND 14
  3523.     4 NPB= NPBL
  3524.       NIC=0
  3525.       DO 7  IB=1, NBBL
  3526.       IF( IB.EQ. NBBL) NPB= NLBL
  3527.       IF( ICASX.GT.1) READ( 14) (( B( I, J), I=1, N1C), J=1, NPB)
  3528.       DO 6  I=1, NPB
  3529.       II= I+ NIC
  3530.       DO 6  J=1, NPC
  3531.       SUM=(0.,0.)
  3532.       DO 5  K=1, N1C
  3533.     5 SUM= SUM+ B( K, I)* C( K, J)
  3534.     6 D( II, J)= D( II, J)- SUM
  3535.     7 NIC= NIC+ NPBL
  3536.       IF( ICASX.GT.1) WRITE( 11) (( D( I, J), I=1, N2C), J=1, NPBL)
  3537.     8 CONTINUE
  3538.       IF( ICASX.EQ.1) GOTO 9
  3539.       REWIND 11
  3540.       REWIND 12
  3541.       REWIND 14
  3542.       REWIND 15
  3543. C     FACTOR D-C(INV(A)B)                                               
  3544.     9 N1CP= N1C+1
  3545.       IF( ICASX.GT.1) GOTO 10
  3546.       CALL FACTR( N2C, D, IP( N1CP), N2C)
  3547.       GOTO 13
  3548.    10 IF( ICASX.EQ.4) GOTO 12
  3549.       NPB= NPBL
  3550.       IC=0
  3551.       DO 11  IB=1, NBBL
  3552.       IF( IB.EQ. NBBL) NPB= NLBL
  3553.       II= IC+1
  3554.       IC= IC+ N2C* NPB
  3555.    11 READ( 11) ( B( I,1), I= II, IC)
  3556.       REWIND 11
  3557.       CALL FACTR( N2C, B, IP( N1CP), N2C)
  3558.       NIC= N2C* N2C
  3559.       WRITE( 11) ( B( I,1), I=1, NIC)
  3560.       REWIND 11
  3561.       GOTO 13
  3562.    12 NBLSYS= NBLSYM
  3563.       NPSYS= NPSYM
  3564.       NLSYS= NLSYM
  3565.       ICASS= ICASE
  3566.       NBLSYM= NBBL
  3567.       NPSYM= NPBL
  3568.       NLSYM= NLBL
  3569.       ICASE=3
  3570.       CALL FACIO( B, N2C,1, IX( N1CP),11,12,16,11)
  3571.       CALL LUNSCR( B, N2C,1, IP( N1CP), IX( N1CP),12,11,16)
  3572.       NBLSYM= NBLSYS
  3573.       NPSYM= NPSYS
  3574.       NLSYM= NLSYS
  3575.       ICASE= ICASS
  3576.    13 RETURN
  3577.       END
  3578. C ***
  3579. C     DOUBLE PRECISION 6/4/85
  3580. C
  3581.       SUBROUTINE FACIO( A, NROW, NOP, IP, IU1, IU2, IU3, IU4)
  3582. C ***
  3583. C                                                                       
  3584. C     FACIO CONTROLS I/O FOR OUT-OF-CORE FACTORIZATION                  
  3585. C                                                                       
  3586.       IMPLICIT REAL (A-H,O-Z)
  3587.       COMPLEX  A
  3588.       COMMON  /MATPAR/ ICASE, NBLOKS, NPBLK, NLAST, NBLSYM, NPSYM, 
  3589.      &NLSYM, IMAT, ICASX, NBBX, NPBX, NLBX, NBBL, NPBL, NLBL
  3590.       DIMENSION  A( NROW,1), IP( NROW)
  3591.       IT=2* NPSYM* NROW
  3592.       NBM= NBLSYM-1
  3593.       I1=1
  3594.       I2= IT
  3595.       I3= I2+1
  3596.       I4=2* IT
  3597.       TIME=0.
  3598.       REWIND IU1
  3599.       REWIND IU2
  3600.       DO 3  KK=1, NOP
  3601.       KA=( KK-1)* NROW+1
  3602.       IFILE3= IU1
  3603.       IFILE4= IU3
  3604.       DO 2  IXBLK1=1, NBM
  3605.       REWIND IU3
  3606.       REWIND IU4
  3607.       CALL BLCKIN( A, IFILE3, I1, I2,1,17)
  3608.       IXBP= IXBLK1+1
  3609.       DO 1  IXBLK2= IXBP, NBLSYM
  3610.       CALL BLCKIN( A, IFILE3, I3, I4,1,18)
  3611.       CALL SECNDS( T1)
  3612.       CALL LFACTR( A, NROW, IXBLK1, IXBLK2, IP( KA))
  3613.       CALL SECNDS( T2)
  3614.       TIME= TIME+ T2- T1
  3615.       IF( IXBLK2.EQ. IXBP) CALL BLCKOT( A, IU2, I1, I2,1,19)
  3616.       IF( IXBLK1.EQ. NBM.AND. IXBLK2.EQ. NBLSYM) IFILE4= IU2
  3617.       CALL BLCKOT( A, IFILE4, I3, I4,1,20)
  3618.     1 CONTINUE
  3619.       IFILE3= IU3
  3620.       IFILE4= IU4
  3621.       IF(( IXBLK1/2)*2.NE. IXBLK1) GOTO 2
  3622.       IFILE3= IU4
  3623.       IFILE4= IU3
  3624.     2 CONTINUE
  3625.     3 CONTINUE
  3626.       REWIND IU1
  3627.       REWIND IU2
  3628.       REWIND IU3
  3629.       REWIND IU4
  3630.       WRITE( 6,4)  TIME
  3631. C                                                                       
  3632.       RETURN
  3633.     4 FORMAT(' CP TIME TAKEN FOR FACTORIZATION = ',1P,E12.5)
  3634.       END
  3635. C ***
  3636. C     DOUBLE PRECISION 6/4/85
  3637. C
  3638.       SUBROUTINE FACTR( N, A, IP, NDIM)
  3639. C ***
  3640. C                                                                       
  3641. C     SUBROUTINE TO FACTOR A MATRIX INTO A UNIT LOWER TRIANGULAR MATRIX 
  3642. C     AND AN UPPER TRIANGULAR MATRIX USING THE GAUSS-DOOLITTLE ALGORITHM
  3643. C     PRESENTED ON PAGES 411-416 OF A. RALSTON--A FIRST COURSE IN       
  3644. C     NUMERICAL ANALYSIS.  COMMENTS BELOW REFER TO COMMENTS IN RALSTONS 
  3645. C     TEXT.    (MATRIX TRANSPOSED.                                      
  3646. C                                                                       
  3647.       IMPLICIT REAL (A-H,O-Z)
  3648.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  3649.       COMPLEX  A, D, ARJ
  3650.       DIMENSION  A( NDIM, NDIM), IP( NDIM)
  3651.       COMMON  /SCRATM/ D( N2M)
  3652.       INTEGER  R, RM1, RP1, PJ, PR
  3653.       IFLG=0
  3654. C                                                                       
  3655. C     STEP 1                                                            
  3656. C                                                                       
  3657.       DO 9  R=1, N
  3658.       DO 1  K=1, N
  3659.       D( K)= A( R, K)
  3660. C                                                                       
  3661. C     STEPS 2 AND 3                                                     
  3662. C                                                                       
  3663.     1 CONTINUE
  3664.       RM1= R-1
  3665.       IF( RM1.LT.1) GOTO 4
  3666.       DO 3  J=1, RM1
  3667.       PJ= IP( J)
  3668.       ARJ= D( PJ)
  3669.       A( R, J)= ARJ
  3670.       D( PJ)= D( J)
  3671.       JP1= J+1
  3672.       DO 2  I= JP1, N
  3673.       D( I)= D( I)- A( J, I)* ARJ
  3674.     2 CONTINUE
  3675.     3 CONTINUE
  3676. C                                                                       
  3677. C     STEP 4                                                            
  3678. C                                                                       
  3679.     4 CONTINUE
  3680.       DMAX= REAL( D( R)* CONJG( D( R)))
  3681.       IP( R)= R
  3682.       RP1= R+1
  3683.       IF( RP1.GT. N) GOTO 6
  3684.       DO 5  I= RP1, N
  3685.       ELMAG= REAL( D( I)* CONJG( D( I)))
  3686.       IF( ELMAG.LT. DMAX) GOTO 5
  3687.       DMAX= ELMAG
  3688.       IP( R)= I
  3689.     5 CONTINUE
  3690.     6 CONTINUE
  3691.       IF( DMAX.LT.1.D-10) IFLG=1
  3692.       PR= IP( R)
  3693.       A( R, R)= D( PR)
  3694. C                                                                       
  3695. C     STEP 5                                                            
  3696. C                                                                       
  3697.       D( PR)= D( R)
  3698.       IF( RP1.GT. N) GOTO 8
  3699.       ARJ=1./ A( R, R)
  3700.       DO 7  I= RP1, N
  3701.       A( R, I)= D( I)* ARJ
  3702.     7 CONTINUE
  3703.     8 CONTINUE
  3704.       IF( IFLG.EQ.0) GOTO 9
  3705.       WRITE( 6,10)  R, DMAX
  3706.       IFLG=0
  3707.     9 CONTINUE
  3708. C                                                                       
  3709.       RETURN
  3710.    10 FORMAT(1H ,'PIVOT(',I3,')=',1P,E16.8)
  3711.       END
  3712. C ***
  3713. C     DOUBLE PRECISION 6/4/85
  3714. C
  3715.       SUBROUTINE FACTRS( NP, NROW, A, IP, IX, IU1, IU2, IU3, IU4)
  3716. C ***
  3717. C                                                                       
  3718. C     FACTRS, FOR SYMMETRIC STRUCTURE, TRANSFORMS SUBMATRICIES TO FORM  
  3719. C     MATRICIES OF THE SYMMETRIC MODES AND CALLS ROUTINE TO FACTOR      
  3720. C     MATRICIES.  IF NO SYMMETRY, THE ROUTINE IS CALLED TO FACTOR THE   
  3721. C     COMPLETE MATRIX.                                                  
  3722. C                                                                       
  3723.       IMPLICIT REAL (A-H,O-Z)
  3724.       COMPLEX  A
  3725.       COMMON  /MATPAR/ ICASE, NBLOKS, NPBLK, NLAST, NBLSYM, NPSYM, 
  3726.      &NLSYM, IMAT, ICASX, NBBX, NPBX, NLBX, NBBL, NPBL, NLBL
  3727.       DIMENSION  A(1), IP( NROW), IX( NROW)
  3728.       NOP= NROW/ NP
  3729.       IF( ICASE.GT.2) GOTO 2
  3730.       DO 1  KK=1, NOP
  3731.       KA=( KK-1)* NP+1
  3732.     1 CALL FACTR( NP, A( KA), IP( KA), NROW)
  3733.       RETURN
  3734. C                                                                       
  3735. C     FACTOR SUBMATRICIES, OR FACTOR COMPLETE MATRIX IF NO SYMMETRY     
  3736. C     EXISTS.                                                           
  3737. C                                                                       
  3738.     2 IF( ICASE.GT.3) GOTO 3
  3739.       CALL FACIO( A, NROW, NOP, IX, IU1, IU2, IU3, IU4)
  3740.       CALL LUNSCR( A, NROW, NOP, IP, IX, IU2, IU3, IU4)
  3741. C                                                                       
  3742. C     REWRITE THE MATRICES BY COLUMNS ON TAPE 13                        
  3743. C                                                                       
  3744.       RETURN
  3745.     3 I2=2* NPBLK* NROW
  3746.       REWIND IU2
  3747.       DO 5  K=1, NOP
  3748.       REWIND IU1
  3749.       ICOLS= NPBLK
  3750.       IR2= K* NP
  3751.       IR1= IR2- NP+1
  3752.       DO 5  L=1, NBLOKS
  3753.       IF( NBLOKS.EQ.1.AND. K.GT.1) GOTO 4
  3754.       CALL BLCKIN( A, IU1,1, I2,1,602)
  3755.       IF( L.EQ. NBLOKS) ICOLS= NLAST
  3756.     4 IRR1= IR1
  3757.       IRR2= IR2
  3758.       DO 5  ICOLDX=1, ICOLS
  3759.       WRITE( IU2) ( A( I), I= IRR1, IRR2)
  3760.       IRR1= IRR1+ NROW
  3761.       IRR2= IRR2+ NROW
  3762.     5 CONTINUE
  3763.       REWIND IU1
  3764.       REWIND IU2
  3765.       IF( ICASE.EQ.5) GOTO 8
  3766.       REWIND IU3
  3767.       IRR1= NP* NP
  3768.       DO 7  KK=1, NOP
  3769.       IR1=1- NP
  3770.       IR2=0
  3771.       DO 6  I=1, NP
  3772.       IR1= IR1+ NP
  3773.       IR2= IR2+ NP
  3774.     6 READ( IU2) ( A( J), J= IR1, IR2)
  3775.       KA=( KK-1)* NP+1
  3776.       CALL FACTR( NP, A, IP( KA), NP)
  3777.       WRITE( IU3) ( A( I), I=1, IRR1)
  3778.     7 CONTINUE
  3779.       REWIND IU2
  3780.       REWIND IU3
  3781.       RETURN
  3782.     8 I2=2* NPSYM* NP
  3783.       DO 10  KK=1, NOP
  3784.       J2= NPSYM
  3785.       DO 10  L=1, NBLSYM
  3786.       IF( L.EQ. NBLSYM) J2= NLSYM
  3787.       IR1=1- NP
  3788.       IR2=0
  3789.       DO 9  J=1, J2
  3790.       IR1= IR1+ NP
  3791.       IR2= IR2+ NP
  3792.     9 READ( IU2) ( A( I), I= IR1, IR2)
  3793.    10 CALL BLCKOT( A, IU1,1, I2,1,193)
  3794.       REWIND IU1
  3795.       CALL FACIO( A, NP, NOP, IX, IU1, IU2, IU3, IU4)
  3796.       CALL LUNSCR( A, NP, NOP, IP, IX, IU2, IU3, IU4)
  3797.       RETURN
  3798.       END
  3799. C ***
  3800. C     DOUBLE PRECISION 6/4/85
  3801. C
  3802. C      COMPLEX FUNCTION FBAR( P)
  3803.       FUNCTION FBAR( P)
  3804. C ***
  3805. C                                                                       
  3806. C     FBAR IS SOMMERFELD ATTENUATION FUNCTION FOR NUMERICAL DISTANCE P  
  3807. C                                                                       
  3808. C      IMPLICIT REAL (A-H,O-Z)
  3809.       COMPLEX  Z, ZS, SUM, POW, TERM, P, FJ, FBAR
  3810.       DIMENSION  FJX(2)
  3811.       EQUIVALENCE(FJ,FJX)
  3812.       DATA   TOSP/1.128379167D+0/, ACCS/1.D-12/, SP/1.772453851D+0/, 
  3813.      &FJX/0.,1./
  3814.       Z= FJ* SQRT( P)
  3815. C                                                                       
  3816. C     SERIES EXPANSION                                                  
  3817. C                                                                       
  3818.       IF( ABS( Z).GT.3.) GOTO 3
  3819.       ZS= Z* Z
  3820.       SUM= Z
  3821.       POW= Z
  3822.       DO 1  I=1,100
  3823.       POW=- POW* ZS/ DFLOAT( I)
  3824.       TERM= POW/(2.* I+1.)
  3825.       SUM= SUM+ TERM
  3826.       TMS= REAL( TERM* CONJG( TERM))
  3827.       SMS= REAL( SUM* CONJG( SUM))
  3828.       IF( TMS/ SMS.LT. ACCS) GOTO 2
  3829.     1 CONTINUE
  3830.     2 FBAR=1.-(1.- SUM* TOSP)* Z* EXP( ZS)* SP
  3831. C                                                                       
  3832. C     ASYMPTOTIC EXPANSION                                              
  3833. C                                                                       
  3834.       RETURN
  3835.     3 IF( REAL( Z).GE.0.) GOTO 4
  3836.       MINUS=1
  3837.       Z=- Z
  3838.       GOTO 5
  3839.     4 MINUS=0
  3840.     5 ZS=.5/( Z* Z)
  3841.       SUM=(0.,0.)
  3842.       TERM=(1.,0.)
  3843.       DO 6  I=1,6
  3844.       TERM=- TERM*(2.* I-1.)* ZS
  3845.     6 SUM= SUM+ TERM
  3846.       IF( MINUS.EQ.1) SUM= SUM-2.* SP* Z* EXP( Z* Z)
  3847.       FBAR=- SUM
  3848.       RETURN
  3849.       END
  3850. C ***
  3851. C     DOUBLE PRECISION 6/4/85
  3852. C
  3853.       SUBROUTINE FBLOCK( NROW, NCOL, IMAX, IRNGF, IPSYM)
  3854. C ***
  3855. C     FBLOCK SETS PARAMETERS FOR OUT-OF-CORE SOLUTION FOR THE PRIMARY   
  3856. C     MATRIX (A)                                                        
  3857.       IMPLICIT REAL (A-H,O-Z)
  3858.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  3859.       COMPLEX  SSX, DETER
  3860.       COMMON  /MATPAR/ ICASE, NBLOKS, NPBLK, NLAST, NBLSYM, NPSYM, 
  3861.      &NLSYM, IMAT, ICASX, NBBX, NPBX, NLBX, NBBL, NPBL, NLBL
  3862.       COMMON  /SMAT/ SSX(16,16)
  3863.       IMX1= IMAX- IRNGF
  3864.       IF( NROW* NCOL.GT. IMX1) GOTO 2
  3865.       NBLOKS=1
  3866.       NPBLK= NROW
  3867.       NLAST= NROW
  3868.       IMAT= NROW* NCOL
  3869.       IF( NROW.NE. NCOL) GOTO 1
  3870.       ICASE=1
  3871.       RETURN
  3872.     1 ICASE=2
  3873.       GOTO 5
  3874.     2 IF( NROW.NE. NCOL) GOTO 3
  3875.       ICASE=3
  3876.       NPBLK= IMAX/(2* NCOL)
  3877.       NPSYM= IMX1/ NCOL
  3878.       IF( NPSYM.LT. NPBLK) NPBLK= NPSYM
  3879.       IF( NPBLK.LT.1) GOTO 12
  3880.       NBLOKS=( NROW-1)/ NPBLK
  3881.       NLAST= NROW- NBLOKS* NPBLK
  3882.       NBLOKS= NBLOKS+1
  3883.       NBLSYM= NBLOKS
  3884.       NPSYM= NPBLK
  3885.       NLSYM= NLAST
  3886.       IMAT= NPBLK* NCOL
  3887.       WRITE( 6,14)  NBLOKS, NPBLK, NLAST
  3888.       GOTO 11
  3889.     3 NPBLK= IMAX/ NCOL
  3890.       IF( NPBLK.LT.1) GOTO 12
  3891.       IF( NPBLK.GT. NROW) NPBLK= NROW
  3892.       NBLOKS=( NROW-1)/ NPBLK
  3893.       NLAST= NROW- NBLOKS* NPBLK
  3894.       NBLOKS= NBLOKS+1
  3895.       WRITE( 6,14)  NBLOKS, NPBLK, NLAST
  3896.       IF( NROW* NROW.GT. IMX1) GOTO 4
  3897.       ICASE=4
  3898.       NBLSYM=1
  3899.       NPSYM= NROW
  3900.       NLSYM= NROW
  3901.       IMAT= NROW* NROW
  3902.       WRITE( 6,15) 
  3903.       GOTO 5
  3904.     4 ICASE=5
  3905.       NPSYM= IMAX/(2* NROW)
  3906.       NBLSYM= IMX1/ NROW
  3907.       IF( NBLSYM.LT. NPSYM) NPSYM= NBLSYM
  3908.       IF( NPSYM.LT.1) GOTO 12
  3909.       NBLSYM=( NROW-1)/ NPSYM
  3910.       NLSYM= NROW- NBLSYM* NPSYM
  3911.       NBLSYM= NBLSYM+1
  3912.       WRITE( 6,16)  NBLSYM, NPSYM, NLSYM
  3913.       IMAT= NPSYM* NROW
  3914.     5 NOP= NCOL/ NROW
  3915.       IF( NOP* NROW.NE. NCOL) GOTO 13
  3916. C                                                                       
  3917. C     SET UP SSX MATRIX FOR ROTATIONAL SYMMETRY.                        
  3918. C                                                                       
  3919.       IF( IPSYM.GT.0) GOTO 7
  3920.       PHAZ=6.2831853072D+0/ NOP
  3921.       DO 6  I=2, NOP
  3922.       DO 6  J= I, NOP
  3923.       ARG= PHAZ* DFLOAT( I-1)* DFLOAT( J-1)
  3924.       SSX( I, J)= CMPLX( COS( ARG), SIN( ARG))
  3925.     6 SSX( J, I)= SSX( I, J)
  3926. C                                                                       
  3927. C     SET UP SSX MATRIX FOR PLANE SYMMETRY                              
  3928. C                                                                       
  3929.       GOTO 11
  3930.     7 KK=1
  3931.       SSX(1,1)=(1.,0.)
  3932.       IF(( NOP.EQ.2).OR.( NOP.EQ.4).OR.( NOP.EQ.8)) GOTO 8
  3933.       STOP
  3934.     8 KA= NOP/2
  3935.       IF( NOP.EQ.8) KA=3
  3936.       DO 10  K=1, KA
  3937.       DO 9  I=1, KK
  3938.       DO 9  J=1, KK
  3939.       DETER= SSX( I, J)
  3940.       SSX( I, J+ KK)= DETER
  3941.       SSX( I+ KK, J+ KK)=- DETER
  3942.     9 SSX( I+ KK, J)= DETER
  3943.    10 KK= KK*2
  3944.    11 RETURN
  3945.    12 WRITE( 6,17)  NROW, NCOL
  3946.       STOP
  3947.    13 WRITE( 6,18)  NROW, NCOL
  3948. C                                                                       
  3949.       STOP
  3950.    14 FORMAT(//' MATRIX FILE STORAGE -  NO. BLOCKS=',I5,' COLUMNS PE',
  3951.      &'R BLOCK=',I5,' COLUMNS IN LAST BLOCK=',I5)
  3952.    15 FORMAT(' SUBMATRICIES FIT IN CORE')
  3953.    16 FORMAT(' SUBMATRIX PARTITIONING -  NO. BLOCKS=',I5,' COLUMNS P',
  3954.      &'ER BLOCK=',I5,' COLUMNS IN LAST BLOCK=',I5)
  3955.    17 FORMAT(' ERROR - INSUFFICIENT STORAGE FOR MATRIX',2I5)
  3956.    18 FORMAT(' SYMMETRY ERROR - NROW,NCOL=',2I5)
  3957.       END
  3958. C ***
  3959. C     DOUBLE PRECISION 6/4/85
  3960. C
  3961.       SUBROUTINE FBNGF( NEQ, NEQ2, IRESRV, IB11, IC11, ID11, IX11)
  3962. C ***
  3963. C     FBNGF SETS THE BLOCKING PARAMETERS FOR THE B, C, AND D ARRAYS FOR 
  3964. C     OUT-OF-CORE STORAGE.                                              
  3965.       IMPLICIT REAL (A-H,O-Z)
  3966.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  3967.       COMMON  /MATPAR/ ICASE, NBLOKS, NPBLK, NLAST, NBLSYM, NPSYM, 
  3968.      &NLSYM, IMAT, ICASX, NBBX, NPBX, NLBX, NBBL, NPBL, NLBL
  3969.       IRESX= IRESRV- IMAT
  3970.       NBLN= NEQ* NEQ2
  3971.       NDLN= NEQ2* NEQ2
  3972.       NBCD=2* NBLN+ NDLN
  3973.       IF( NBCD.GT. IRESX) GOTO 1
  3974.       ICASX=1
  3975.       IB11= IMAT+1
  3976.       GOTO 2
  3977.     1 IF( ICASE.LT.3) GOTO 3
  3978.       IF( NBCD.GT. IRESRV.OR. NBLN.GT. IRESX) GOTO 3
  3979.       ICASX=2
  3980.       IB11=1
  3981.     2 NBBX=1
  3982.       NPBX= NEQ
  3983.       NLBX= NEQ
  3984.       NBBL=1
  3985.       NPBL= NEQ2
  3986.       NLBL= NEQ2
  3987.       GOTO 5
  3988.     3 IR= IRESRV
  3989.       IF( ICASE.LT.3) IR= IRESX
  3990.       ICASX=3
  3991.       IF( NDLN.GT. IR) ICASX=4
  3992.       NBCD=2* NEQ+ NEQ2
  3993.       NPBL= IR/ NBCD
  3994.       NLBL= IR/(2* NEQ2)
  3995.       IF( NLBL.LT. NPBL) NPBL= NLBL
  3996.       IF( ICASE.LT.3) GOTO 4
  3997.       NLBL= IRESX/ NEQ
  3998.       IF( NLBL.LT. NPBL) NPBL= NLBL
  3999.     4 IF( NPBL.LT.1) GOTO 6
  4000.       NBBL=( NEQ2-1)/ NPBL
  4001.       NLBL= NEQ2- NBBL* NPBL
  4002.       NBBL= NBBL+1
  4003.       NBLN= NEQ* NPBL
  4004.       IR= IR- NBLN
  4005.       NPBX= IR/ NEQ2
  4006.       IF( NPBX.GT. NEQ) NPBX= NEQ
  4007.       NBBX=( NEQ-1)/ NPBX
  4008.       NLBX= NEQ- NBBX* NPBX
  4009.       NBBX= NBBX+1
  4010.       IB11=1
  4011.       IF( ICASE.LT.3) IB11= IMAT+1
  4012.     5 IC11= IB11+ NBLN
  4013.       ID11= IC11+ NBLN
  4014.       IX11= IMAT+1
  4015.       WRITE( 6,11)  NEQ2
  4016.       IF( ICASX.EQ.1) RETURN
  4017.       WRITE( 6,8)  ICASX
  4018.       WRITE( 6,9)  NBBX, NPBX, NLBX
  4019.       WRITE( 6,10)  NBBL, NPBL, NLBL
  4020.       RETURN
  4021.     6 WRITE( 6,7)  IRESRV, IMAT, NEQ, NEQ2
  4022. C                                                                       
  4023.       STOP
  4024.     7 FORMAT(55H ERROR - INSUFFICIENT STORAGE FOR INTERACTION MATRICIES
  4025.      &,'  IRESRV,IMAT,NEQ,NEQ2 =',4I5)
  4026.     8 FORMAT(48H FILE STORAGE FOR NEW MATRIX SECTIONS -  ICASX =,I2)
  4027.     9 FORMAT(' B FILLED BY ROWS -',15X,'NO. BLOCKS =',I3,3X,'ROWS P',
  4028.      &'ER BLOCK =',I3,3X,'ROWS IN LAST BLOCK =',I3)
  4029.    10 FORMAT(32H B BY COLUMNS, C AND D BY ROWS -,2X,12HNO. BLOCKS =,I3,
  4030.      &4X,15HR/C PER BLOCK =,I3,4X,19HR/C IN LAST BLOCK =,I3)
  4031.    11 FORMAT(//,35H N.G.F. - NUMBER OF NEW UNKNOWNS IS,I4)
  4032.       END
  4033. C ***
  4034. C     DOUBLE PRECISION 6/4/85
  4035. C
  4036.       SUBROUTINE FFLD( THET, PHI, ETH, EPH)
  4037. C ***
  4038. C                                                                       
  4039. C     FFLD CALCULATES THE FAR ZONE RADIATED ELECTRIC FIELDS,            
  4040. C     THE FACTOR EXP(J*K*R)/(R/LAMDA) NOT INCLUDED                      
  4041. C                                                                       
  4042.       IMPLICIT REAL (A-H,O-Z)
  4043.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  4044.       COMPLEX  CIX, CIY, CIZ, EXA, ETH, EPH, CONST, CCX, CCY, CCZ, 
  4045.      &CDP, CUR
  4046.       COMPLEX  ZRATI, ZRSIN, RRV, RRH, RRV1, RRH1, RRV2, RRH2, 
  4047.      &ZRATI2, TIX, TIY, TIZ, T1, ZSCRN, EX, EY, EZ, GX, GY, GZ, FRATI
  4048.       COMMON  /DATA/ LD, N1, N2, N, NP, M1, M2, M, MP, X( NM), Y( NM), 
  4049.      &Z( NM), SI( NM), BI( NM), ALP( NM), BET( NM), ICON1( N2M), ICON2(
  4050.      & N2M), ITAG( N2M), ICONX( NM), WLAM, IPSYM
  4051.       COMMON  /ANGL/ SALP( NM)
  4052.       COMMON  /CRNT/ AIR( NM), AII( NM), BIR( NM), BII( NM), CIR( NM), 
  4053.      &CII( NM), CUR( N3M)
  4054.       COMMON  /GND/ ZRATI, ZRATI2, FRATI, CL, CH, SCRWL, SCRWR, NRADL, 
  4055.      &KSYMP, IFAR, IPERF, T1, T2
  4056.       DIMENSION  CAB(1), SAB(1), CONSX(2)
  4057.       EQUIVALENCE(CAB,ALP),(SAB,BET),(CONST,CONSX)
  4058.       DATA   PI, TP, ETA/3.141592654D+0,6.283185308D+0,376.73/
  4059.       DATA   CONSX/0.,-29.97922085D+0/
  4060.       PHX=- SIN( PHI)
  4061.       PHY= COS( PHI)
  4062.       ROZ= COS( THET)
  4063.       ROZS= ROZ
  4064.       THX= ROZ* PHY
  4065.       THY=- ROZ* PHX
  4066.       THZ=- SIN( THET)
  4067.       ROX=- THZ* PHY
  4068.       ROY= THZ* PHX
  4069. C                                                                       
  4070. C     LOOP FOR STRUCTURE IMAGE IF ANY                                   
  4071. C                                                                       
  4072.       IF( N.EQ.0) GOTO 20
  4073. C                                                                       
  4074. C     CALCULATION OF REFLECTION COEFFECIENTS                            
  4075. C                                                                       
  4076.       DO 19  K=1, KSYMP
  4077.       IF( K.EQ.1) GOTO 4
  4078. C                                                                       
  4079. C     FOR PERFECT GROUND                                                
  4080. C                                                                       
  4081.       IF( IPERF.NE.1) GOTO 1
  4082.       RRV=-(1.,0.)
  4083.       RRH=-(1.,0.)
  4084. C                                                                       
  4085. C     FOR INFINITE PLANAR GROUND                                        
  4086. C                                                                       
  4087.       GOTO 2
  4088.     1 ZRSIN= SQRT(1.- ZRATI* ZRATI* THZ* THZ)
  4089.       RRV=-( ROZ- ZRATI* ZRSIN)/( ROZ+ ZRATI* ZRSIN)
  4090.       RRH=( ZRATI* ROZ- ZRSIN)/( ZRATI* ROZ+ ZRSIN)
  4091. C                                                                       
  4092. C     FOR THE CLIFF PROBLEM, TWO REFLCTION COEFFICIENTS CALCULATED      
  4093. C                                                                       
  4094.     2 IF( IFAR.LE.1) GOTO 3
  4095.       RRV1= RRV
  4096.       RRH1= RRH
  4097.       TTHET= TAN( THET)
  4098.       IF( IFAR.EQ.4) GOTO 3
  4099.       ZRSIN= SQRT(1.- ZRATI2* ZRATI2* THZ* THZ)
  4100.       RRV2=-( ROZ- ZRATI2* ZRSIN)/( ROZ+ ZRATI2* ZRSIN)
  4101.       RRH2=( ZRATI2* ROZ- ZRSIN)/( ZRATI2* ROZ+ ZRSIN)
  4102.       DARG=- TP*2.* CH* ROZ
  4103.     3 ROZ=- ROZ
  4104.       CCX= CIX
  4105.       CCY= CIY
  4106.       CCZ= CIZ
  4107.     4 CIX=(0.,0.)
  4108.       CIY=(0.,0.)
  4109. C                                                                       
  4110. C     LOOP OVER STRUCTURE SEGMENTS                                      
  4111. C                                                                       
  4112.       CIZ=(0.,0.)
  4113.       DO 17  I=1, N
  4114.       OMEGA=-( ROX* CAB( I)+ ROY* SAB( I)+ ROZ* SALP( I))
  4115.       EL= PI* SI( I)
  4116.       SILL= OMEGA* EL
  4117.       TOP= EL+ SILL
  4118.       BOT= EL- SILL
  4119.       IF( ABS( OMEGA).LT.1.D-7) GOTO 5
  4120.       A=2.* SIN( SILL)/ OMEGA
  4121.       GOTO 6
  4122.     5 A=(2.- OMEGA* OMEGA* EL* EL/3.)* EL
  4123.     6 IF( ABS( TOP).LT.1.D-7) GOTO 7
  4124.       TOO= SIN( TOP)/ TOP
  4125.       GOTO 8
  4126.     7 TOO=1.- TOP* TOP/6.
  4127.     8 IF( ABS( BOT).LT.1.D-7) GOTO 9
  4128.       BOO= SIN( BOT)/ BOT
  4129.       GOTO 10
  4130.     9 BOO=1.- BOT* BOT/6.
  4131.    10 B= EL*( BOO- TOO)
  4132.       C= EL*( BOO+ TOO)
  4133.       RR= A* AIR( I)+ B* BII( I)+ C* CIR( I)
  4134.       RI= A* AII( I)- B* BIR( I)+ C* CII( I)
  4135.       ARG= TP*( X( I)* ROX+ Y( I)* ROY+ Z( I)* ROZ)
  4136.       IF( K.EQ.2.AND. IFAR.GE.2) GOTO 11
  4137. C                                                                       
  4138. C     SUMMATION FOR FAR FIELD INTEGRAL                                  
  4139. C                                                                       
  4140.       EXA= CMPLX( COS( ARG), SIN( ARG))* CMPLX( RR, RI)
  4141.       CIX= CIX+ EXA* CAB( I)
  4142.       CIY= CIY+ EXA* SAB( I)
  4143.       CIZ= CIZ+ EXA* SALP( I)
  4144. C                                                                       
  4145. C     CALCULATION OF IMAGE CONTRIBUTION IN CLIFF AND GROUND SCREEN      
  4146. C     PROBLEMS.                                                         
  4147. C                                                                       
  4148.       GOTO 17
  4149. C                                                                       
  4150. C     SPECULAR POINT DISTANCE                                           
  4151. C                                                                       
  4152.    11 DR= Z( I)* TTHET
  4153.       D= DR* PHY+ X( I)
  4154.       IF( IFAR.EQ.2) GOTO 13
  4155.       D= SQRT( D* D+( Y( I)- DR* PHX)**2)
  4156.       IF( IFAR.EQ.3) GOTO 13
  4157. C                                                                       
  4158. C     RADIAL WIRE GROUND SCREEN REFLECTION COEFFICIENT                  
  4159. C                                                                       
  4160.       IF(( SCRWL- D).LT.0.) GOTO 12
  4161.       D= D+ T2
  4162.       ZSCRN= T1* D* LOG( D/ T2)
  4163.       ZSCRN=( ZSCRN* ZRATI)/( ETA* ZRATI+ ZSCRN)
  4164.       ZRSIN= SQRT(1.- ZSCRN* ZSCRN* THZ* THZ)
  4165.       RRV=( ROZ+ ZSCRN* ZRSIN)/(- ROZ+ ZSCRN* ZRSIN)
  4166.       RRH=( ZSCRN* ROZ+ ZRSIN)/( ZSCRN* ROZ- ZRSIN)
  4167.       GOTO 16
  4168.    12 IF( IFAR.EQ.4) GOTO 14
  4169.       IF( IFAR.EQ.5) D= DR* PHY+ X( I)
  4170.    13 IF(( CL- D).LE.0.) GOTO 15
  4171.    14 RRV= RRV1
  4172.       RRH= RRH1
  4173.       GOTO 16
  4174.    15 RRV= RRV2
  4175.       RRH= RRH2
  4176.       ARG= ARG+ DARG
  4177. C                                                                       
  4178. C     CONTRIBUTION OF EACH IMAGE SEGMENT MODIFIED BY REFLECTION COEF. , 
  4179. C     FOR CLIFF AND GROUND SCREEN PROBLEMS                              
  4180. C                                                                       
  4181.    16 EXA= CMPLX( COS( ARG), SIN( ARG))* CMPLX( RR, RI)
  4182.       TIX= EXA* CAB( I)
  4183.       TIY= EXA* SAB( I)
  4184.       TIZ= EXA* SALP( I)
  4185.       CDP=( TIX* PHX+ TIY* PHY)*( RRH- RRV)
  4186.       CIX= CIX+ TIX* RRV+ CDP* PHX
  4187.       CIY= CIY+ TIY* RRV+ CDP* PHY
  4188.       CIZ= CIZ- TIZ* RRV
  4189.    17 CONTINUE
  4190.       IF( K.EQ.1) GOTO 19
  4191. C                                                                       
  4192. C     CALCULATION OF CONTRIBUTION OF STRUCTURE IMAGE FOR INFINITE GROUND
  4193. C                                                                       
  4194.       IF( IFAR.GE.2) GOTO 18
  4195.       CDP=( CIX* PHX+ CIY* PHY)*( RRH- RRV)
  4196.       CIX= CCX+ CIX* RRV+ CDP* PHX
  4197.       CIY= CCY+ CIY* RRV+ CDP* PHY
  4198.       CIZ= CCZ- CIZ* RRV
  4199.       GOTO 19
  4200.    18 CIX= CIX+ CCX
  4201.       CIY= CIY+ CCY
  4202.       CIZ= CIZ+ CCZ
  4203.    19 CONTINUE
  4204.       IF( M.GT.0) GOTO 21
  4205.       ETH=( CIX* THX+ CIY* THY+ CIZ* THZ)* CONST
  4206.       EPH=( CIX* PHX+ CIY* PHY)* CONST
  4207.       RETURN
  4208.    20 CIX=(0.,0.)
  4209.       CIY=(0.,0.)
  4210.       CIZ=(0.,0.)
  4211. C                                                                       
  4212. C     ELECTRIC FIELD COMPONENTS                                         
  4213. C                                                                       
  4214.    21 ROZ= ROZS
  4215.       RFL=-1.
  4216.       DO 25  IP=1, KSYMP
  4217.       RFL=- RFL
  4218.       RRZ= ROZ* RFL
  4219.       CALL FFLDS( ROX, ROY, RRZ, CUR( N+1), GX, GY, GZ)
  4220.       IF( IP.EQ.2) GOTO 22
  4221.       EX= GX
  4222.       EY= GY
  4223.       EZ= GZ
  4224.       GOTO 25
  4225.    22 IF( IPERF.NE.1) GOTO 23
  4226.       GX=- GX
  4227.       GY=- GY
  4228.       GZ=- GZ
  4229.       GOTO 24
  4230.    23 RRV= SQRT(1.- ZRATI* ZRATI* THZ* THZ)
  4231.       RRH= ZRATI* ROZ
  4232.       RRH=( RRH- RRV)/( RRH+ RRV)
  4233.       RRV= ZRATI* RRV
  4234.       RRV=-( ROZ- RRV)/( ROZ+ RRV)
  4235.       ETH=( GX* PHX+ GY* PHY)*( RRH- RRV)
  4236.       GX= GX* RRV+ ETH* PHX
  4237.       GY= GY* RRV+ ETH* PHY
  4238.       GZ= GZ* RRV
  4239.    24 EX= EX+ GX
  4240.       EY= EY+ GY
  4241.       EZ= EZ- GZ
  4242.    25 CONTINUE
  4243.       EX= EX+ CIX* CONST
  4244.       EY= EY+ CIY* CONST
  4245.       EZ= EZ+ CIZ* CONST
  4246.       ETH= EX* THX+ EY* THY+ EZ* THZ
  4247.       EPH= EX* PHX+ EY* PHY
  4248.       RETURN
  4249.       END
  4250. C ***
  4251. C     DOUBLE PRECISION 6/4/85
  4252. C
  4253.       SUBROUTINE FFLDS( ROX, ROY, ROZ, SCUR, EX, EY, EZ)
  4254. C ***
  4255. C     CALCULATES THE XYZ COMPONENTS OF THE ELECTRIC FIELD DUE TO        
  4256. C     SURFACE CURRENTS                                                  
  4257.       IMPLICIT REAL (A-H,O-Z)
  4258.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  4259.       COMPLEX  CT, CONS, SCUR, EX, EY, EZ
  4260.       COMMON  /DATA/ LD, N1, N2, N, NP, M1, M2, M, MP, X( NM), Y( NM), 
  4261.      &Z( NM), SI( NM), BI( NM), ALP( NM), BET( NM), ICON1( N2M), ICON2(
  4262.      & N2M), ITAG( N2M), ICONX( NM), WLAM, IPSYM
  4263.       DIMENSION  XS(1), YS(1), ZS(1), S(1), SCUR(1), CONSX(2)
  4264.       EQUIVALENCE(XS,X),(YS,Y),(ZS,Z),(S,BI),(CONS,CONSX)
  4265.       DATA   TPI/6.283185308D+0/, CONSX/0.,188.365/
  4266.       EX=(0.,0.)
  4267.       EY=(0.,0.)
  4268.       EZ=(0.,0.)
  4269.       I= LD+1
  4270.       DO 1  J=1, M
  4271.       I= I-1
  4272.       ARG= TPI*( ROX* XS( I)+ ROY* YS( I)+ ROZ* ZS( I))
  4273.       CT= CMPLX( COS( ARG)* S( I), SIN( ARG)* S( I))
  4274.       K=3* J
  4275.       EX= EX+ SCUR( K-2)* CT
  4276.       EY= EY+ SCUR( K-1)* CT
  4277.       EZ= EZ+ SCUR( K)* CT
  4278.     1 CONTINUE
  4279.       CT= ROX* EX+ ROY* EY+ ROZ* EZ
  4280.       EX= CONS*( CT* ROX- EX)
  4281.       EY= CONS*( CT* ROY- EY)
  4282.       EZ= CONS*( CT* ROZ- EZ)
  4283.       RETURN
  4284.       END
  4285. C ***
  4286. C     DOUBLE PRECISION 6/4/85
  4287. C
  4288.       SUBROUTINE GF( ZK, CO, SI)
  4289. C ***
  4290. C                                                                       
  4291. C     GF COMPUTES THE INTEGRAND EXP(JKR)/(KR) FOR NUMERICAL INTEGRATION.
  4292. C                                                                       
  4293.       IMPLICIT REAL (A-H,O-Z)
  4294.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  4295.       COMMON  /TMI/ ZPK, RKB2, IJ
  4296.       ZDK= ZK- ZPK
  4297.       RK= SQRT( RKB2+ ZDK* ZDK)
  4298.       SI= SIN( RK)/ RK
  4299.       IF( IJ) 1,2,1
  4300.     1 CO= COS( RK)/ RK
  4301.       RETURN
  4302.     2 IF( RK.LT..2) GOTO 3
  4303.       CO=( COS( RK)-1.)/ RK
  4304.       RETURN
  4305.     3 RKS= RK* RK
  4306.       CO=((-1.38888889D-3* RKS+4.16666667D-2)* RKS-.5)* RK
  4307.       RETURN
  4308.       END
  4309. C ***
  4310. C     DOUBLE PRECISION 6/4/85
  4311. C
  4312.       SUBROUTINE GFIL( IPRT)
  4313. C ***
  4314. C                                                                       
  4315. C     GFIL READS THE N.G.F. FILE                                        
  4316. C                                                                       
  4317.       IMPLICIT REAL (A-H,O-Z)
  4318.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  4319.       COMPLEX  CM, SSX, ZRATI, ZRATI2, T1, ZARRAY, AR1, AR2, AR3, 
  4320.      &EPSCF, FRATI
  4321.       COMMON  /DATA/ LD, N1, N2, N, NP, M1, M2, M, MP, X( NM), Y( NM), 
  4322.      &Z( NM), SI( NM), BI( NM), ALP( NM), BET( NM), ICON1( N2M), ICON2(
  4323.      & N2M), ITAG( N2M), ICONX( NM), WLAM, IPSYM
  4324.       COMMON  /CMB/ CM(90000)
  4325.       COMMON  /ANGL/ SALP( NM)
  4326.       COMMON  /GND/ ZRATI, ZRATI2, FRATI, CL, CH, SCRWL, SCRWR, NRADL, 
  4327.      &KSYMP, IFAR, IPERF, T1, T2
  4328.       COMMON  /GGRID/ AR1(11,10,4), AR2(17,5,4), AR3(9,8,4), EPSCF, DXA
  4329.      &(3), DYA(3), XSA(3), YSA(3), NXA(3), NYA(3)
  4330.       COMMON  /MATPAR/ ICASE, NBLOKS, NPBLK, NLAST, NBLSYM, NPSYM, 
  4331.      &NLSYM, IMAT, ICASX, NBBX, NPBX, NLBX, NBBL, NPBL, NLBL
  4332.       COMMON  /SMAT/ SSX(16,16)
  4333.       COMMON  /ZLOAD/ ZARRAY( NM), NLOAD, NLODF
  4334.       COMMON  /SAVE/ IP( N2M), KCOM, COM(19,5), EPSR, SIG, SCRWLT, 
  4335.      &SCRWRT, FMHZ
  4336.       DATA   IGFL/20/
  4337.       REWIND IGFL
  4338.       READ( IGFL)  N1, NP, M1, MP, WLAM, FMHZ, IPSYM, KSYMP, IPERF, 
  4339.      &NRADL, EPSR, SIG, SCRWLT, SCRWRT, NLODF, KCOM
  4340.       N= N1
  4341.       M= M1
  4342.       N2= N1+1
  4343.       M2= M1+1
  4344. C     READ SEG. DATA AND CONVERT BACK TO END COORD. IN UNITS OF METERS  
  4345.       IF( N1.EQ.0) GOTO 2
  4346.       READ( IGFL) ( X( I), I=1, N1),( Y( I), I=1, N1),( Z( I), I=1, N1)
  4347.      &
  4348.       READ( IGFL) ( SI( I), I=1, N1),( BI( I), I=1, N1),( ALP( I), I=1,
  4349.      & N1)
  4350.       READ( IGFL) ( BET( I), I=1, N1),( SALP( I), I=1, N1)
  4351.       READ( IGFL) ( ICON1( I), I=1, N1),( ICON2( I), I=1, N1)
  4352.       READ( IGFL) ( ITAG( I), I=1, N1)
  4353.       IF( NLODF.NE.0) READ( IGFL) ( ZARRAY( I), I=1, N1)
  4354.       DO 1  I=1, N1
  4355.       XI= X( I)* WLAM
  4356.       YI= Y( I)* WLAM
  4357.       ZI= Z( I)* WLAM
  4358.       DX= SI( I)*.5* WLAM
  4359.       X( I)= XI- ALP( I)* DX
  4360.       Y( I)= YI- BET( I)* DX
  4361.       Z( I)= ZI- SALP( I)* DX
  4362.       SI( I)= XI+ ALP( I)* DX
  4363.       ALP( I)= YI+ BET( I)* DX
  4364.       BET( I)= ZI+ SALP( I)* DX
  4365.       BI( I)= BI( I)* WLAM
  4366.     1 CONTINUE
  4367.     2 IF( M1.EQ.0) GOTO 4
  4368. C     READ PATCH DATA AND CONVERT TO METERS                             
  4369.       J= LD- M1+1
  4370.       READ( IGFL) ( X( I), I= J, LD),( Y( I), I= J, LD),( Z( I), I= J, 
  4371.      &LD)
  4372.       READ( IGFL) ( SI( I), I= J, LD),( BI( I), I= J, LD),( ALP( I), I=
  4373.      & J, LD)
  4374.       READ( IGFL) ( BET( I), I= J, LD),( SALP( I), I= J, LD)
  4375.       READ( IGFL) ( ICON1( I), I= J, LD),( ICON2( I), I= J, LD)
  4376.       READ( IGFL) ( ITAG( I), I= J, LD)
  4377.       DX= WLAM* WLAM
  4378.       DO 3  I= J, LD
  4379.       X( I)= X( I)* WLAM
  4380.       Y( I)= Y( I)* WLAM
  4381.       Z( I)= Z( I)* WLAM
  4382.     3 BI( I)= BI( I)* DX
  4383.     4 READ( IGFL)  ICASE, NBLOKS, NPBLK, NLAST, NBLSYM, NPSYM, NLSYM, 
  4384.      &IMAT
  4385.       IF( IPERF.EQ.2) READ( IGFL)  AR1, AR2, AR3, EPSCF, DXA, DYA, XSA,
  4386.      & YSA, NXA, NYA
  4387.       NEQ= N1+2* M1
  4388.       NPEQ= NP+2* MP
  4389.       NOP= NEQ/ NPEQ
  4390.       IF( NOP.GT.1) READ( IGFL) (( SSX( I, J), I=1, NOP), J=1, NOP)
  4391. C     READ MATRIX A AND WRITE TAPE13 FOR OUT OF CORE                    
  4392.       READ( IGFL) ( IP( I), I=1, NEQ), COM
  4393.       IF( ICASE.GT.2) GOTO 5
  4394.       IOUT= NEQ* NPEQ
  4395.       READ( IGFL) ( CM( I), I=1, IOUT)
  4396.       GOTO 10
  4397.     5 REWIND 13
  4398.       IF( ICASE.NE.4) GOTO 7
  4399.       IOUT= NPEQ* NPEQ
  4400.       DO 6  K=1, NOP
  4401.       READ( IGFL) ( CM( J), J=1, IOUT)
  4402.     6 WRITE( 13) ( CM( J), J=1, IOUT)
  4403.       GOTO 9
  4404.     7 IOUT= NPSYM* NPEQ*2
  4405.       NBL2=2* NBLSYM
  4406.       DO 8  IOP=1, NOP
  4407.       DO 8  I=1, NBL2
  4408.       CALL BLCKIN( CM, IGFL,1, IOUT,1,206)
  4409.     8 CALL BLCKOT( CM,13,1, IOUT,1,205)
  4410.     9 REWIND 13
  4411. C     WRITE(6,N) G.F. HEADING                                           
  4412.    10 REWIND IGFL
  4413.       WRITE( 6,16) 
  4414.       WRITE( 6,14) 
  4415.       WRITE( 6,14) 
  4416.       WRITE( 6,17) 
  4417.       WRITE( 6,18)  N1, M1
  4418.       IF( NOP.GT.1) WRITE( 6,19)  NOP
  4419.       WRITE( 6,20)  IMAT, ICASE
  4420.       IF( ICASE.LT.3) GOTO 11
  4421.       NBL2= NEQ* NPEQ
  4422.       WRITE( 6,21)  NBL2
  4423.    11 WRITE( 6,22)  FMHZ
  4424.       IF( KSYMP.EQ.2.AND. IPERF.EQ.1) WRITE( 6,23) 
  4425.       IF( KSYMP.EQ.2.AND. IPERF.EQ.0) WRITE( 6,27) 
  4426.       IF( KSYMP.EQ.2.AND. IPERF.EQ.2) WRITE( 6,28) 
  4427.       IF( KSYMP.EQ.2.AND. IPERF.NE.1) WRITE( 6,24)  EPSR, SIG
  4428.       WRITE( 6,17) 
  4429.       DO 12  J=1, KCOM
  4430.    12 WRITE( 6,15) ( COM( I, J), I=1,19)
  4431.       WRITE( 6,17) 
  4432.       WRITE( 6,14) 
  4433.       WRITE( 6,14) 
  4434.       WRITE( 6,16) 
  4435.       IF( IPRT.EQ.0) RETURN
  4436.       WRITE( 6,25) 
  4437.       DO 13  I=1, N1
  4438.    13 WRITE( 6,26)  I, X( I), Y( I), Z( I), SI( I), ALP( I), BET( I)
  4439. C                                                                       
  4440.       RETURN
  4441.    14 FORMAT(5X,'**************************************************',
  4442.      &'**********************************')
  4443.    15 FORMAT(5X,3H** ,19A4,3H **)
  4444.    16 FORMAT(////)
  4445.    17 FORMAT(5X,2H**,80X,2H**)
  4446.    18 FORMAT(5X,'** NUMERICAL GREEN S FUNCTION',53X,2H**,/,5X,'** NO',
  4447.      &'. SEGMENTS =',I4,10X,'NO. PATCHES =',I4,34X,2H**)
  4448.    19 FORMAT(5X,'** NO. SYMMETRIC SECTIONS =',I4,51X,2H**)
  4449.    20 FORMAT(5X,'** N.G.F. MATRIX -  CORE STORAGE =',I7,' COMPLEX NU',
  4450.      &'MBERS,  CASE',I2,16X,2H**)
  4451.    21 FORMAT(5X,2H**,19X,'MATRIX SIZE =',I7,' COMPLEX NUMBERS',25X,'**')
  4452.    22 FORMAT(5X,'** FREQUENCY =',1P,E12.5,' MHZ.',51X,2H**)
  4453.    23 FORMAT(5X,'** PERFECT GROUND',65X,2H**)
  4454.    24 FORMAT(5X,'** GROUND PARAMETERS - DIELECTRIC CONSTANT =',1P,E12.5,
  4455.      &26X,'**',/,5X,'**',21X,'CONDUCTIVITY =',E12.5,' MHOS/M.',25X,'**')
  4456.    25 FORMAT(39X,'NUMERICAL GREEN S FUNCTION DATA',/,41X,'COORDINATES',
  4457.      &' OF SEGMENT ENDS',/,51X,'(METERS)',/,5X,'SEG.',11X,
  4458.      &'- - - END ON''E - - -',26X,'- - - END TWO - - -',/,6X,3HNO.,6X,1
  4459.      &HX,14X,1HY,14X,1HZ,14X,1HX,14X,1HY,14X,1HZ)
  4460.    26 FORMAT(1X,I7,1P,6E15.6)
  4461.    27 FORMAT(5X,'** FINITE GROUND.  REFLECTION COEFFICIENT APPROXIMAT',
  4462.      &'ION',27X,2H**)
  4463.    28 FORMAT(5X,'** FINITE GROUND.  SOMMERFELD SOLUTION',44X,'**')
  4464.       END
  4465. C ***
  4466. C     DOUBLE PRECISION 6/4/85
  4467. C
  4468.       SUBROUTINE GFLD( RHO, PHI, RZ, ETH, EPI, ERD, UX, KSYMP)
  4469. C ***
  4470. C                                                                       
  4471. C     GFLD COMPUTES THE RADIATED FIELD INCLUDING GROUND WAVE.           
  4472. C                                                                       
  4473.       IMPLICIT REAL (A-H,O-Z)
  4474.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  4475.       COMPLEX  CUR, EPI, CIX, CIY, CIZ, EXA, XX1, XX2, U, U2, ERV, 
  4476.      &EZV, ERH, EPH
  4477.       COMPLEX  EZH, EX, EY, ETH, UX, ERD
  4478.       COMMON  /DATA/ LD, N1, N2, N, NP, M1, M2, M, MP, X( NM), Y( NM), 
  4479.      &Z( NM), SI( NM), BI( NM), ALP( NM), BET( NM), ICON1( N2M), ICON2(
  4480.      & N2M), ITAG( N2M), ICONX( NM), WLAM, IPSYM
  4481.       COMMON  /ANGL/ SALP( NM)
  4482.       COMMON  /CRNT/ AIR( NM), AII( NM), BIR( NM), BII( NM), CIR( NM), 
  4483.      &CII( NM), CUR( N3M)
  4484.       COMMON  /GWAV/ U, U2, XX1, XX2, R1, R2, ZMH, ZPH
  4485.       DIMENSION  CAB(1), SAB(1)
  4486.       EQUIVALENCE(CAB(1),ALP(1)),(SAB(1),BET(1))
  4487.       DATA   PI, TP/3.141592654D+0,6.283185308D+0/
  4488.       R= SQRT( RHO* RHO+ RZ* RZ)
  4489.       IF( KSYMP.EQ.1) GOTO 1
  4490.       IF( ABS( UX).GT..5) GOTO 1
  4491.       IF( R.GT.1.E5) GOTO 1
  4492. C                                                                       
  4493. C     COMPUTATION OF SPACE WAVE ONLY                                    
  4494. C                                                                       
  4495.       GOTO 4
  4496.     1 IF( RZ.LT.1.D-20) GOTO 2
  4497.       THET= ATAN( RHO/ RZ)
  4498.       GOTO 3
  4499.     2 THET= PI*.5
  4500.     3 CALL FFLD( THET, PHI, ETH, EPI)
  4501.       ARG=- TP* R
  4502.       EXA= CMPLX( COS( ARG), SIN( ARG))/ R
  4503.       ETH= ETH* EXA
  4504.       EPI= EPI* EXA
  4505.       ERD=(0.,0.)
  4506. C                                                                       
  4507. C     COMPUTATION OF SPACE AND GROUND WAVES.                            
  4508. C                                                                       
  4509.       RETURN
  4510.     4 U= UX
  4511.       U2= U* U
  4512.       PHX=- SIN( PHI)
  4513.       PHY= COS( PHI)
  4514.       RX= RHO* PHY
  4515.       RY=- RHO* PHX
  4516.       CIX=(0.,0.)
  4517.       CIY=(0.,0.)
  4518. C                                                                       
  4519. C     SUMMATION OF FIELD FROM INDIVIDUAL SEGMENTS                       
  4520. C                                                                       
  4521.       CIZ=(0.,0.)
  4522.       DO 17  I=1, N
  4523.       DX= CAB( I)
  4524.       DY= SAB( I)
  4525.       DZ= SALP( I)
  4526.       RIX= RX- X( I)
  4527.       RIY= RY- Y( I)
  4528.       RHS= RIX* RIX+ RIY* RIY
  4529.       RHP= SQRT( RHS)
  4530.       IF( RHP.LT.1.D-6) GOTO 5
  4531.       RHX= RIX/ RHP
  4532.       RHY= RIY/ RHP
  4533.       GOTO 6
  4534.     5 RHX=1.
  4535.       RHY=0.
  4536.     6 CALP=1.- DZ* DZ
  4537.       IF( CALP.LT.1.D-6) GOTO 7
  4538.       CALP= SQRT( CALP)
  4539.       CBET= DX/ CALP
  4540.       SBET= DY/ CALP
  4541.       CPH= RHX* CBET+ RHY* SBET
  4542.       SPH= RHY* CBET- RHX* SBET
  4543.       GOTO 8
  4544.     7 CPH= RHX
  4545.       SPH= RHY
  4546.     8 EL= PI* SI( I)
  4547. C                                                                       
  4548. C     INTEGRATION OF (CURRENT)*(PHASE FACTOR) OVER SEGMENT AND IMAGE FOR
  4549. C     CONSTANT, SINE, AND COSINE CURRENT DISTRIBUTIONS                  
  4550. C                                                                       
  4551.       RFL=-1.
  4552.       DO 16  K=1,2
  4553.       RFL=- RFL
  4554.       RIZ= RZ- Z( I)* RFL
  4555.       RXYZ= SQRT( RIX* RIX+ RIY* RIY+ RIZ* RIZ)
  4556.       RNX= RIX/ RXYZ
  4557.       RNY= RIY/ RXYZ
  4558.       RNZ= RIZ/ RXYZ
  4559.       OMEGA=-( RNX* DX+ RNY* DY+ RNZ* DZ* RFL)
  4560.       SILL= OMEGA* EL
  4561.       TOP= EL+ SILL
  4562.       BOT= EL- SILL
  4563.       IF( ABS( OMEGA).LT.1.D-7) GOTO 9
  4564.       A=2.* SIN( SILL)/ OMEGA
  4565.       GOTO 10
  4566.     9 A=(2.- OMEGA* OMEGA* EL* EL/3.)* EL
  4567.    10 IF( ABS( TOP).LT.1.D-7) GOTO 11
  4568.       TOO= SIN( TOP)/ TOP
  4569.       GOTO 12
  4570.    11 TOO=1.- TOP* TOP/6.
  4571.    12 IF( ABS( BOT).LT.1.D-7) GOTO 13
  4572.       BOO= SIN( BOT)/ BOT
  4573.       GOTO 14
  4574.    13 BOO=1.- BOT* BOT/6.
  4575.    14 B= EL*( BOO- TOO)
  4576.       C= EL*( BOO+ TOO)
  4577.       RR= A* AIR( I)+ B* BII( I)+ C* CIR( I)
  4578.       RI= A* AII( I)- B* BIR( I)+ C* CII( I)
  4579.       ARG= TP*( X( I)* RNX+ Y( I)* RNY+ Z( I)* RNZ* RFL)
  4580.       EXA= CMPLX( COS( ARG), SIN( ARG))* CMPLX( RR, RI)/ TP
  4581.       IF( K.EQ.2) GOTO 15
  4582.       XX1= EXA
  4583.       R1= RXYZ
  4584.       ZMH= RIZ
  4585.       GOTO 16
  4586.    15 XX2= EXA
  4587.       R2= RXYZ
  4588.       ZPH= RIZ
  4589. C                                                                       
  4590. C     CALL SUBROUTINE TO COMPUTE THE FIELD OF SEGMENT INCLUDING GROUND  
  4591. C     WAVE.                                                             
  4592. C                                                                       
  4593.    16 CONTINUE
  4594.       CALL GWAVE( ERV, EZV, ERH, EZH, EPH)
  4595.       ERH= ERH* CPH* CALP+ ERV* DZ
  4596.       EPH= EPH* SPH* CALP
  4597.       EZH= EZH* CPH* CALP+ EZV* DZ
  4598.       EX= ERH* RHX- EPH* RHY
  4599.       EY= ERH* RHY+ EPH* RHX
  4600.       CIX= CIX+ EX
  4601.       CIY= CIY+ EY
  4602.    17 CIZ= CIZ+ EZH
  4603.       ARG=- TP* R
  4604.       EXA= CMPLX( COS( ARG), SIN( ARG))
  4605.       CIX= CIX* EXA
  4606.       CIY= CIY* EXA
  4607.       CIZ= CIZ* EXA
  4608.       RNX= RX/ R
  4609.       RNY= RY/ R
  4610.       RNZ= RZ/ R
  4611.       THX= RNZ* PHY
  4612.       THY=- RNZ* PHX
  4613.       THZ=- RHO/ R
  4614.       ETH= CIX* THX+ CIY* THY+ CIZ* THZ
  4615.       EPI= CIX* PHX+ CIY* PHY
  4616.       ERD= CIX* RNX+ CIY* RNY+ CIZ* RNZ
  4617.       RETURN
  4618.       END
  4619. C ***
  4620. C     DOUBLE PRECISION 6/4/85
  4621. C
  4622.       SUBROUTINE GFOUT
  4623. C ***
  4624. C                                                                       
  4625. C     WRITE N.G.F. FILE                                                 
  4626. C                                                                       
  4627.       IMPLICIT REAL (A-H,O-Z)
  4628.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  4629.       COMPLEX  CM, SSX, ZRATI, ZRATI2, T1, ZARRAY, AR1, AR2, AR3, 
  4630.      &EPSCF, FRATI
  4631.       COMMON  /DATA/ LD, N1, N2, N, NP, M1, M2, M, MP, X( NM), Y( NM), 
  4632.      &Z( NM), SI( NM), BI( NM), ALP( NM), BET( NM), ICON1( N2M), ICON2(
  4633.      & N2M), ITAG( N2M), ICONX( NM), WLAM, IPSYM
  4634.       COMMON  /CMB/ CM(90000)
  4635.       COMMON  /ANGL/ SALP( NM)
  4636.       COMMON  /GND/ ZRATI, ZRATI2, FRATI, CL, CH, SCRWL, SCRWR, NRADL, 
  4637.      &KSYMP, IFAR, IPERF, T1, T2
  4638.       COMMON  /GGRID/ AR1(11,10,4), AR2(17,5,4), AR3(9,8,4), EPSCF, DXA
  4639.      &(3), DYA(3), XSA(3), YSA(3), NXA(3), NYA(3)
  4640.       COMMON  /MATPAR/ ICASE, NBLOKS, NPBLK, NLAST, NBLSYM, NPSYM, 
  4641.      &NLSYM, IMAT, ICASX, NBBX, NPBX, NLBX, NBBL, NPBL, NLBL
  4642.       COMMON  /SMAT/ SSX(16,16)
  4643.       COMMON  /ZLOAD/ ZARRAY( NM), NLOAD, NLODF
  4644.       COMMON  /SAVE/ IP( N2M), KCOM, COM(19,5), EPSR, SIG, SCRWLT, 
  4645.      &SCRWRT, FMHZ
  4646.       DATA   IGFL/20/
  4647.       NEQ= N+2* M
  4648.       NPEQ= NP+2* MP
  4649.       NOP= NEQ/ NPEQ
  4650.       WRITE( IGFL)  N, NP, M, MP, WLAM, FMHZ, IPSYM, KSYMP, IPERF, 
  4651.      &NRADL, EPSR, SIG, SCRWLT, SCRWRT, NLOAD, KCOM
  4652.       IF( N.EQ.0) GOTO 1
  4653.       WRITE( IGFL) ( X( I), I=1, N),( Y( I), I=1, N),( Z( I), I=1, N)
  4654.       WRITE( IGFL) ( SI( I), I=1, N),( BI( I), I=1, N),( ALP( I), I=1, 
  4655.      &N)
  4656.       WRITE( IGFL) ( BET( I), I=1, N),( SALP( I), I=1, N)
  4657.       WRITE( IGFL) ( ICON1( I), I=1, N),( ICON2( I), I=1, N)
  4658.       WRITE( IGFL) ( ITAG( I), I=1, N)
  4659.       IF( NLOAD.GT.0) WRITE( IGFL) ( ZARRAY( I), I=1, N)
  4660.     1 IF( M.EQ.0) GOTO 2
  4661.       J= LD- M+1
  4662.       WRITE( IGFL) ( X( I), I= J, LD),( Y( I), I= J, LD),( Z( I), I= J,
  4663.      & LD)
  4664.       WRITE( IGFL) ( SI( I), I= J, LD),( BI( I), I= J, LD),( ALP( I), I
  4665.      &= J, LD)
  4666.       WRITE( IGFL) ( BET( I), I= J, LD),( SALP( I), I= J, LD)
  4667.       WRITE( IGFL) ( ICON1( I), I= J, LD),( ICON2( I), I= J, LD)
  4668.       WRITE( IGFL) ( ITAG( I), I= J, LD)
  4669.     2 WRITE( IGFL)  ICASE, NBLOKS, NPBLK, NLAST, NBLSYM, NPSYM, NLSYM, 
  4670.      &IMAT
  4671.       IF( IPERF.EQ.2) WRITE( IGFL)  AR1, AR2, AR3, EPSCF, DXA, DYA, XSA
  4672.      &, YSA, NXA, NYA
  4673.       IF( NOP.GT.1) WRITE( IGFL) (( SSX( I, J), I=1, NOP), J=1, NOP)
  4674.       WRITE( IGFL) ( IP( I), I=1, NEQ), COM
  4675.       IF( ICASE.GT.2) GOTO 3
  4676.       IOUT= NEQ* NPEQ
  4677.       WRITE( IGFL) ( CM( I), I=1, IOUT)
  4678.       GOTO 12
  4679.     3 IF( ICASE.NE.4) GOTO 5
  4680.       REWIND 13
  4681.       I= NPEQ* NPEQ
  4682.       DO 4  K=1, NOP
  4683.       READ( 13) ( CM( J), J=1, I)
  4684.     4 WRITE( IGFL) ( CM( J), J=1, I)
  4685.       REWIND 13
  4686.       GOTO 12
  4687.     5 REWIND 13
  4688.       REWIND 14
  4689.       IF( ICASE.EQ.5) GOTO 8
  4690.       IOUT= NPBLK* NEQ*2
  4691.       DO 6  I=1, NBLOKS
  4692.       CALL BLCKIN( CM,13,1, IOUT,1,201)
  4693.     6 CALL BLCKOT( CM, IGFL,1, IOUT,1,202)
  4694.       DO 7  I=1, NBLOKS
  4695.       CALL BLCKIN( CM,14,1, IOUT,1,203)
  4696.     7 CALL BLCKOT( CM, IGFL,1, IOUT,1,204)
  4697.       GOTO 12
  4698.     8 IOUT= NPSYM* NPEQ*2
  4699.       DO 11  IOP=1, NOP
  4700.       DO 9  I=1, NBLSYM
  4701.       CALL BLCKIN( CM,13,1, IOUT,1,205)
  4702.     9 CALL BLCKOT( CM, IGFL,1, IOUT,1,206)
  4703.       DO 10  I=1, NBLSYM
  4704.       CALL BLCKIN( CM,14,1, IOUT,1,207)
  4705.    10 CALL BLCKOT( CM, IGFL,1, IOUT,1,208)
  4706.    11 CONTINUE
  4707.       REWIND 13
  4708.       REWIND 14
  4709.    12 REWIND IGFL
  4710.       WRITE( 6,13)  IGFL, IMAT
  4711. C                                                                       
  4712.       RETURN
  4713.    13 FORMAT(///,' ****NUMERICAL GREEN S FUNCTION FILE ON TAPE',I3,
  4714.      &'****',/,5X,'MATRIX STORAGE -',I7,' COMPLEX NUMBERS',///)
  4715.       END
  4716. C ***
  4717. C     DOUBLE PRECISION 6/4/85
  4718. C
  4719.       SUBROUTINE GH( ZK, HR, HI)
  4720. C ***
  4721. C     INTEGRAND FOR H FIELD OF A WIRE                                   
  4722.       IMPLICIT REAL (A-H,O-Z)
  4723.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  4724.       COMMON  /TMH/ ZPK, RHKS
  4725.       RS= ZK- ZPK
  4726.       RS= RHKS+ RS* RS
  4727.       R= SQRT( RS)
  4728.       CKR= COS( R)
  4729.       SKR= SIN( R)
  4730.       RR2=1./ RS
  4731.       RR3= RR2/ R
  4732.       HR= SKR* RR2+ CKR* RR3
  4733.       HI= CKR* RR2- SKR* RR3
  4734.       RETURN
  4735.       END
  4736. C ***
  4737. C     DOUBLE PRECISION 6/4/85
  4738. C
  4739.       SUBROUTINE GWAVE( ERV, EZV, ERH, EZH, EPH)
  4740. C ***
  4741. C                                                                       
  4742. C     GWAVE COMPUTES THE ELECTRIC FIELD, INCLUDING GROUND WAVE, OF A    
  4743. C     CURRENT ELEMENT OVER A GROUND PLANE USING FORMULAS OF K.A. NORTON 
  4744. C     (PROC. IRE, SEPT., 1937, PP.1203,1236.)                           
  4745. C                                                                       
  4746.       IMPLICIT REAL (A-H,O-Z)
  4747.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  4748.       COMPLEX  FJ, TPJ, U2, U, RK1, RK2, T1, T2, T3, T4, P1, RV, OMR
  4749.      &, W, F, Q1, RH, V, G, XR1, XR2, X1, X2, X3, X4, X5, X6, X7, EZV, 
  4750.      &ERV, EZH, ERH, EPH, XX1, XX2, ECON, FBAR
  4751.       COMMON  /GWAV/ U, U2, XX1, XX2, R1, R2, ZMH, ZPH
  4752.       DIMENSION  FJX(2), TPJX(2), ECONX(2)
  4753.       EQUIVALENCE(FJ,FJX),(TPJ,TPJX),(ECON,ECONX)
  4754.       DATA   PI/3.141592654D+0/, FJX/0.,1./, TPJX/0.,6.283185308D+0/
  4755.       DATA   ECONX/0.,-188.367/
  4756.       SPPP= ZMH/ R1
  4757.       SPPP2= SPPP* SPPP
  4758.       CPPP2=1.- SPPP2
  4759.       IF( CPPP2.LT.1.D-20) CPPP2=1.D-20
  4760.       CPPP= SQRT( CPPP2)
  4761.       SPP= ZPH/ R2
  4762.       SPP2= SPP* SPP
  4763.       CPP2=1.- SPP2
  4764.       IF( CPP2.LT.1.D-20) CPP2=1.D-20
  4765.       CPP= SQRT( CPP2)
  4766.       RK1=- TPJ* R1
  4767.       RK2=- TPJ* R2
  4768.       T1=1.- U2* CPP2
  4769.       T2= SQRT( T1)
  4770.       T3=(1.-1./ RK1)/ RK1
  4771.       T4=(1.-1./ RK2)/ RK2
  4772.       P1= RK2* U2* T1/(2.* CPP2)
  4773.       RV=( SPP- U* T2)/( SPP+ U* T2)
  4774.       OMR=1.- RV
  4775.       W=1./ OMR
  4776.       W=(4.,0.)* P1* W* W
  4777.       F= FBAR( W)
  4778.       Q1= RK2* T1/(2.* U2* CPP2)
  4779.       RH=( T2- U* SPP)/( T2+ U* SPP)
  4780.       V=1./(1.+ RH)
  4781.       V=(4.,0.)* Q1* V* V
  4782.       G= FBAR( V)
  4783.       XR1= XX1/ R1
  4784.       XR2= XX2/ R2
  4785.       X1= CPPP2* XR1
  4786.       X2= RV* CPP2* XR2
  4787.       X3= OMR* CPP2* F* XR2
  4788.       X4= U* T2* SPP*2.* XR2/ RK2
  4789.       X5= XR1* T3*(1.-3.* SPPP2)
  4790.       X6= XR2* T4*(1.-3.* SPP2)
  4791.       EZV=( X1+ X2+ X3- X4- X5- X6)* ECON
  4792.       X1= SPPP* CPPP* XR1
  4793.       X2= RV* SPP* CPP* XR2
  4794.       X3= CPP* OMR* U* T2* F* XR2
  4795.       X4= SPP* CPP* OMR* XR2/ RK2
  4796.       X5=3.* SPPP* CPPP* T3* XR1
  4797.       X6= CPP* U* T2* OMR* XR2/ RK2*.5
  4798.       X7=3.* SPP* CPP* T4* XR2
  4799.       ERV=-( X1+ X2- X3+ X4- X5+ X6- X7)* ECON
  4800.       EZH=-( X1- X2+ X3- X4- X5- X6+ X7)* ECON
  4801.       X1= SPPP2* XR1
  4802.       X2= RV* SPP2* XR2
  4803.       X4= U2* T1* OMR* F* XR2
  4804.       X5= T3*(1.-3.* CPPP2)* XR1
  4805.       X6= T4*(1.-3.* CPP2)*(1.- U2*(1.+ RV)- U2* OMR* F)* XR2
  4806.       X7= U2* CPP2* OMR*(1.-1./ RK2)*( F*( U2* T1- SPP2-1./ RK2)+1./ 
  4807.      &RK2)* XR2
  4808.       ERH=( X1- X2- X4- X5+ X6+ X7)* ECON
  4809.       X1= XR1
  4810.       X2= RH* XR2
  4811.       X3=( RH+1.)* G* XR2
  4812.       X4= T3* XR1
  4813.       X5= T4*(1.- U2*(1.+ RV)- U2* OMR* F)* XR2
  4814.       X6=.5* U2* OMR*( F*( U2* T1- SPP2-1./ RK2)+1./ RK2)* XR2/ RK2
  4815.       EPH=-( X1- X2+ X3- X4+ X5+ X6)* ECON
  4816.       RETURN
  4817.       END
  4818. C ***
  4819. C     DOUBLE PRECISION 6/4/85
  4820. C
  4821.       SUBROUTINE GX( ZZ, RH, XK, GZ, GZP)
  4822. C ***
  4823. C     SEGMENT END CONTRIBUTIONS FOR THIN WIRE APPROX.                   
  4824.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  4825.       COMPLEX  GZ, GZP
  4826.       R2= ZZ* ZZ+ RH* RH
  4827.       R= SQRT( R2)
  4828.       RKZ= XK* R
  4829.       GZ= CMPLX( COS( RKZ),- SIN( RKZ))/ R
  4830.       GZP=- CMPLX(1.0, RKZ)* GZ/ R2
  4831.       RETURN
  4832.       END
  4833. C ***
  4834. C     DOUBLE PRECISION 6/4/85
  4835. C
  4836.       SUBROUTINE GXX( ZZ, RH, A, A2, XK, IRA, G1, G1P, G2, G2P, G3, GZP
  4837.      &)
  4838. C ***
  4839. C     SEGMENT END CONTRIBUTIONS FOR EXT. THIN WIRE APPROX.              
  4840.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  4841.       COMPLEX  GZ, C1, C2, C3, G1, G1P, G2, G2P, G3, GZP
  4842.       R2= ZZ* ZZ+ RH* RH
  4843.       R= SQRT( R2)
  4844.       R4= R2* R2
  4845.       RK= XK* R
  4846.       RK2= RK* RK
  4847.       RH2= RH* RH
  4848.       T1=.25* A2* RH2/ R4
  4849.       T2=.5* A2/ R2
  4850.       C1= CMPLX(1.0, RK)
  4851.       C2=3.* C1- RK2
  4852.       C3= CMPLX(6.0, RK)* RK2-15.* C1
  4853.       GZ= CMPLX( COS( RK),- SIN( RK))/ R
  4854.       G2= GZ*(1.+ T1* C2)
  4855.       G1= G2- T2* C1* GZ
  4856.       GZ= GZ/ R2
  4857.       G2P= GZ*( T1* C3- C1)
  4858.       GZP= T2* C2* GZ
  4859.       G3= G2P+ GZP
  4860.       G1P= G3* ZZ
  4861.       IF( IRA.EQ.1) GOTO 2
  4862.       G3=( G3+ GZP)* RH
  4863.       GZP=- ZZ* C1* GZ
  4864.       IF( RH.GT.1.D-10) GOTO 1
  4865.       G2=0.
  4866.       G2P=0.
  4867.       RETURN
  4868.     1 G2= G2/ RH
  4869.       G2P= G2P* ZZ/ RH
  4870.       RETURN
  4871.     2 T2=.5* A
  4872.       G2=- T2* C1* GZ
  4873.       G2P= T2* GZ* C2/ R2
  4874.       G3= RH2* G2P- A* GZ* C1
  4875.       G2P= G2P* ZZ
  4876.       GZP=- ZZ* C1* GZ
  4877.       RETURN
  4878.       END
  4879. C ***
  4880. C     DOUBLE PRECISION 6/4/85
  4881. C
  4882.       SUBROUTINE HELIX( S, HL, A1, B1, A2, B2, RAD, NS, ITG)
  4883. C ***
  4884. C     SUBROUTINE HELIX GENERATES SEGMENT GEOMETRY DATA FOR A HELIX OF NS
  4885. C     SEGMENTS
  4886.       IMPLICIT REAL (A-H,O-Z)
  4887.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  4888.       COMMON  /DATA/ LD, N1, N2, N, NP, M1, M2, M, MP, X( NM), Y( NM), 
  4889.      &Z( NM), SI( NM), BI( NM), ALP( NM), BET( NM), ICON1( N2M), ICON2(
  4890.      & N2M), ITAG( N2M), ICONX( NM), WLAM, IPSYM
  4891.       DIMENSION  X2(1), Y2(1), Z2(1)
  4892.       EQUIVALENCE(X2(1),SI(1)),(Y2(1),ALP(1)),(Z2(1),BET(1))
  4893.       DATA   PI/3.1415926D+0/
  4894.       IST= N+1
  4895.       N= N+ NS
  4896.       NP= N
  4897.       MP= M
  4898.       IPSYM=0
  4899.       IF( NS.LT.1) RETURN
  4900.       TURNS= ABS( HL/ S)
  4901.       ZINC= ABS( HL/ NS)
  4902.       Z( IST)=0.
  4903.       DO 25  I= IST, N
  4904.       BI( I)= RAD
  4905.       ITAG( I)= ITG
  4906.       IF( I.NE. IST) Z( I)= Z( I-1)+ ZINC
  4907.       Z2( I)= Z( I)+ ZINC
  4908.       IF( A2.NE. A1) GOTO 10
  4909.       IF( B1.EQ.0) B1= A1
  4910.       X( I)= A1* COS(2.* PI* Z( I)/ S)
  4911.       Y( I)= B1* SIN(2.* PI* Z( I)/ S)
  4912.       X2( I)= A1* COS(2.* PI* Z2( I)/ S)
  4913.       Y2( I)= B1* SIN(2.* PI* Z2( I)/ S)
  4914.       GOTO 20
  4915.    10 IF( B2.EQ.0) B2= A2
  4916.       X( I)=( A1+( A2- A1)* Z( I)/ ABS( HL))* COS(2.* PI* Z( I)/ S)
  4917.       Y( I)=( B1+( B2- B1)* Z( I)/ ABS( HL))* SIN(2.* PI* Z( I)/ S)
  4918.       X2( I)=( A1+( A2- A1)* Z2( I)/ ABS( HL))* COS(2.* PI* Z2( I)/ S)
  4919.       Y2( I)=( B1+( B2- B1)* Z2( I)/ ABS( HL))* SIN(2.* PI* Z2( I)/ S)
  4920.    20 IF( HL.GT.0) GOTO 25
  4921.       COPY= X( I)
  4922.       X( I)= Y( I)
  4923.       Y( I)= COPY
  4924.       COPY= X2( I)
  4925.       X2( I)= Y2( I)
  4926.       Y2( I)= COPY
  4927.    25 CONTINUE
  4928.       IF( A2.EQ. A1) GOTO 21
  4929.       SANGLE= ATAN( A2/( ABS( HL)+( ABS( HL)* A1)/( A2- A1)))
  4930.       WRITE( 6,104)  SANGLE
  4931.   104 FORMAT(5X,'THE CONE ANGLE OF THE SPIRAL IS',F10.4)
  4932.       RETURN
  4933.    21 IF( A1.NE. B1) GOTO 30
  4934.       HDIA=2.* A1
  4935.       TURN= HDIA* PI
  4936.       PITCH= ATAN( S/( PI* HDIA))
  4937.       TURN= TURN/ COS( PITCH)
  4938.       PITCH=180.* PITCH/ PI
  4939.       GOTO 40
  4940.    30 IF( A1.LT. B1) GOTO 34
  4941.       HMAJ=2.* A1
  4942.       HMIN=2.* B1
  4943.       GOTO 35
  4944.    34 HMAJ=2.* B1
  4945.       HMIN=2.* A1
  4946.    35 HDIA= SQRT(( HMAJ**2+ HMIN**2)/2* HMAJ)
  4947.       TURN=2.* PI* HDIA
  4948.       PITCH=(180./ PI)* ATAN( S/( PI* HDIA))
  4949.    40 WRITE( 6,105)  PITCH, TURN
  4950.   105 FORMAT(5X,'THE PITCH ANGLE IS',F10.4/5X,
  4951.      &'THE LENGTH OF WIRE/TURN ''IS',F10.4)
  4952.       RETURN
  4953.       END
  4954. C ***
  4955. C     DOUBLE PRECISION 6/4/85
  4956. C
  4957.       SUBROUTINE HFK( EL1, EL2, RHK, ZPKX, SGR, SGI)
  4958. C ***
  4959. C     HFK COMPUTES THE H FIELD OF A UNIFORM CURRENT FILAMENT BY         
  4960. C     NUMERICAL INTEGRATION                                             
  4961.       IMPLICIT REAL (A-H,O-Z)
  4962.       COMMON  /TMH/ ZPK, RHKS
  4963.       DATA   NX, NM, NTS, RX/1,65536,4,1.D-4/
  4964.       ZPK= ZPKX
  4965.       RHKS= RHK* RHK
  4966.       Z= EL1
  4967.       ZE= EL2
  4968.       S= ZE- Z
  4969.       EP= S/(10.* NM)
  4970.       ZEND= ZE- EP
  4971.       SGR=0.0
  4972.       SGI=0.0
  4973.       NS= NX
  4974.       NT=0
  4975.       CALL GH( Z, G1R, G1I)
  4976.     1 DZ= S/ NS
  4977.       ZP= Z+ DZ
  4978.       IF( ZP- ZE) 3,3,2
  4979.     2 DZ= ZE- Z
  4980.       IF( ABS( DZ)- EP) 17,17,3
  4981.     3 DZOT= DZ*.5
  4982.       ZP= Z+ DZOT
  4983.       CALL GH( ZP, G3R, G3I)
  4984.       ZP= Z+ DZ
  4985.       CALL GH( ZP, G5R, G5I)
  4986.     4 T00R=( G1R+ G5R)* DZOT
  4987.       T00I=( G1I+ G5I)* DZOT
  4988.       T01R=( T00R+ DZ* G3R)*0.5
  4989.       T01I=( T00I+ DZ* G3I)*0.5
  4990.       T10R=(4.0* T01R- T00R)/3.0
  4991.       T10I=(4.0* T01I- T00I)/3.0
  4992.       CALL TEST( T01R, T10R, TE1R, T01I, T10I, TE1I,0.)
  4993.       IF( TE1I- RX) 5,5,6
  4994.     5 IF( TE1R- RX) 8,8,6
  4995.     6 ZP= Z+ DZ*0.25
  4996.       CALL GH( ZP, G2R, G2I)
  4997.       ZP= Z+ DZ*0.75
  4998.       CALL GH( ZP, G4R, G4I)
  4999.       T02R=( T01R+ DZOT*( G2R+ G4R))*0.5
  5000.       T02I=( T01I+ DZOT*( G2I+ G4I))*0.5
  5001.       T11R=(4.0* T02R- T01R)/3.0
  5002.       T11I=(4.0* T02I- T01I)/3.0
  5003.       T20R=(16.0* T11R- T10R)/15.0
  5004.       T20I=(16.0* T11I- T10I)/15.0
  5005.       CALL TEST( T11R, T20R, TE2R, T11I, T20I, TE2I,0.)
  5006.       IF( TE2I- RX) 7,7,14
  5007.     7 IF( TE2R- RX) 9,9,14
  5008.     8 SGR= SGR+ T10R
  5009.       SGI= SGI+ T10I
  5010.       NT= NT+2
  5011.       GOTO 10
  5012.     9 SGR= SGR+ T20R
  5013.       SGI= SGI+ T20I
  5014.       NT= NT+1
  5015.    10 Z= Z+ DZ
  5016.       IF( Z- ZEND) 11,17,17
  5017.    11 G1R= G5R
  5018.       G1I= G5I
  5019.       IF( NT- NTS) 1,12,12
  5020.    12 IF( NS- NX) 1,1,13
  5021.    13 NS= NS/2
  5022.       NT=1
  5023.       GOTO 1
  5024.    14 NT=0
  5025.       IF( NS- NM) 16,15,15
  5026.    15 WRITE( 6,18)  Z
  5027.       GOTO 9
  5028.    16 NS= NS*2
  5029.       DZ= S/ NS
  5030.       DZOT= DZ*0.5
  5031.       G5R= G3R
  5032.       G5I= G3I
  5033.       G3R= G2R
  5034.       G3I= G2I
  5035.       GOTO 4
  5036.    17 CONTINUE
  5037.       SGR= SGR* RHK*.5
  5038.       SGI= SGI* RHK*.5
  5039. C                                                                       
  5040.       RETURN
  5041.    18 FORMAT(' STEP SIZE LIMITED AT Z=',F10.5)
  5042.       END
  5043. C ***
  5044. C     DOUBLE PRECISION 6/4/85
  5045. C
  5046.       SUBROUTINE HINTG( XI, YI, ZI)
  5047. C ***
  5048. C     HINTG COMPUTES THE H FIELD OF A PATCH CURRENT                     
  5049.       IMPLICIT REAL (A-H,O-Z)
  5050.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  5051.       COMPLEX  EXK, EYK, EZK, EXS, EYS, EZS, EXC, EYC, EZC, ZRATI, 
  5052.      &ZRATI2, GAM, F1X, F1Y, F1Z, F2X, F2Y, F2Z, RRV, RRH, T1, FRATI
  5053.       COMMON  /DATAJ/ S, B, XJ, YJ, ZJ, CABJ, SABJ, SALPJ, EXK, EYK, 
  5054.      &EZK, EXS, EYS, EZS, EXC, EYC, EZC, RKH, IEXK, IND1, INDD1, IND2, 
  5055.      &INDD2, IPGND
  5056.       COMMON  /GND/ ZRATI, ZRATI2, FRATI, CL, CH, SCRWL, SCRWR, NRADL, 
  5057.      &KSYMP, IFAR, IPERF, T1, T2
  5058.       EQUIVALENCE(T1XJ,CABJ),(T1YJ,SABJ),(T1ZJ,SALPJ),(T2XJ,B),(T2YJ,
  5059.      &IND1),(T2ZJ,IND2)
  5060.       DATA   FPI/12.56637062D+0/, TP/6.283185308D+0/
  5061.       RX= XI- XJ
  5062.       RY= YI- YJ
  5063.       RFL=-1.
  5064.       EXK=(0.,0.)
  5065.       EYK=(0.,0.)
  5066.       EZK=(0.,0.)
  5067.       EXS=(0.,0.)
  5068.       EYS=(0.,0.)
  5069.       EZS=(0.,0.)
  5070.       DO 5  IP=1, KSYMP
  5071.       RFL=- RFL
  5072.       RZ= ZI- ZJ* RFL
  5073.       RSQ= RX* RX+ RY* RY+ RZ* RZ
  5074.       IF( RSQ.LT.1.D-20) GOTO 5
  5075.       R= SQRT( RSQ)
  5076.       RK= TP* R
  5077.       CR= COS( RK)
  5078.       SR= SIN( RK)
  5079.       GAM=-( CMPLX( CR,- SR)+ RK* CMPLX( SR, CR))/( FPI* RSQ* R)* S
  5080.       EXC= GAM* RX
  5081.       EYC= GAM* RY
  5082.       EZC= GAM* RZ
  5083.       T1ZR= T1ZJ* RFL
  5084.       T2ZR= T2ZJ* RFL
  5085.       F1X= EYC* T1ZR- EZC* T1YJ
  5086.       F1Y= EZC* T1XJ- EXC* T1ZR
  5087.       F1Z= EXC* T1YJ- EYC* T1XJ
  5088.       F2X= EYC* T2ZR- EZC* T2YJ
  5089.       F2Y= EZC* T2XJ- EXC* T2ZR
  5090.       F2Z= EXC* T2YJ- EYC* T2XJ
  5091.       IF( IP.EQ.1) GOTO 4
  5092.       IF( IPERF.NE.1) GOTO 1
  5093.       F1X=- F1X
  5094.       F1Y=- F1Y
  5095.       F1Z=- F1Z
  5096.       F2X=- F2X
  5097.       F2Y=- F2Y
  5098.       F2Z=- F2Z
  5099.       GOTO 4
  5100.     1 XYMAG= SQRT( RX* RX+ RY* RY)
  5101.       IF( XYMAG.GT.1.D-6) GOTO 2
  5102.       PX=0.
  5103.       PY=0.
  5104.       CTH=1.
  5105.       RRV=(1.,0.)
  5106.       GOTO 3
  5107.     2 PX=- RY/ XYMAG
  5108.       PY= RX/ XYMAG
  5109.       CTH= RZ/ R
  5110.       RRV= SQRT(1.- ZRATI* ZRATI*(1.- CTH* CTH))
  5111.     3 RRH= ZRATI* CTH
  5112.       RRH=( RRH- RRV)/( RRH+ RRV)
  5113.       RRV= ZRATI* RRV
  5114.       RRV=-( CTH- RRV)/( CTH+ RRV)
  5115.       GAM=( F1X* PX+ F1Y* PY)*( RRV- RRH)
  5116.       F1X= F1X* RRH+ GAM* PX
  5117.       F1Y= F1Y* RRH+ GAM* PY
  5118.       F1Z= F1Z* RRH
  5119.       GAM=( F2X* PX+ F2Y* PY)*( RRV- RRH)
  5120.       F2X= F2X* RRH+ GAM* PX
  5121.       F2Y= F2Y* RRH+ GAM* PY
  5122.       F2Z= F2Z* RRH
  5123.     4 EXK= EXK+ F1X
  5124.       EYK= EYK+ F1Y
  5125.       EZK= EZK+ F1Z
  5126.       EXS= EXS+ F2X
  5127.       EYS= EYS+ F2Y
  5128.       EZS= EZS+ F2Z
  5129.     5 CONTINUE
  5130.       RETURN
  5131.       END
  5132. C ***
  5133. C     DOUBLE PRECISION 6/4/85
  5134. C
  5135.       SUBROUTINE HSFLD( XI, YI, ZI, AI)
  5136. C ***
  5137. C     HSFLD COMPUTES THE H FIELD FOR CONSTANT, SINE, AND COSINE CURRENT 
  5138. C     ON A SEGMENT INCLUDING GROUND EFFECTS.                            
  5139.       IMPLICIT REAL (A-H,O-Z)
  5140.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  5141.       COMPLEX  EXK, EYK, EZK, EXS, EYS, EZS, EXC, EYC, EZC, ZRATI, 
  5142.      &ZRATI2, T1, HPK, HPS, HPC, QX, QY, QZ, RRV, RRH, ZRATX, FRATI
  5143.       COMMON  /DATAJ/ S, B, XJ, YJ, ZJ, CABJ, SABJ, SALPJ, EXK, EYK, 
  5144.      &EZK, EXS, EYS, EZS, EXC, EYC, EZC, RKH, IEXK, IND1, INDD1, IND2, 
  5145.      &INDD2, IPGND
  5146.       COMMON  /GND/ ZRATI, ZRATI2, FRATI, CL, CH, SCRWL, SCRWR, NRADL, 
  5147.      &KSYMP, IFAR, IPERF, T1, T2
  5148.       DATA   ETA/376.73/
  5149.       XIJ= XI- XJ
  5150.       YIJ= YI- YJ
  5151.       RFL=-1.
  5152.       DO 7  IP=1, KSYMP
  5153.       RFL=- RFL
  5154.       SALPR= SALPJ* RFL
  5155.       ZIJ= ZI- RFL* ZJ
  5156.       ZP= XIJ* CABJ+ YIJ* SABJ+ ZIJ* SALPR
  5157.       RHOX= XIJ- CABJ* ZP
  5158.       RHOY= YIJ- SABJ* ZP
  5159.       RHOZ= ZIJ- SALPR* ZP
  5160.       RH= SQRT( RHOX* RHOX+ RHOY* RHOY+ RHOZ* RHOZ+ AI* AI)
  5161.       IF( RH.GT.1.D-10) GOTO 1
  5162.       EXK=0.
  5163.       EYK=0.
  5164.       EZK=0.
  5165.       EXS=0.
  5166.       EYS=0.
  5167.       EZS=0.
  5168.       EXC=0.
  5169.       EYC=0.
  5170.       EZC=0.
  5171.       GOTO 7
  5172.     1 RHOX= RHOX/ RH
  5173.       RHOY= RHOY/ RH
  5174.       RHOZ= RHOZ/ RH
  5175.       PHX= SABJ* RHOZ- SALPR* RHOY
  5176.       PHY= SALPR* RHOX- CABJ* RHOZ
  5177.       PHZ= CABJ* RHOY- SABJ* RHOX
  5178.       CALL HSFLX( S, RH, ZP, HPK, HPS, HPC)
  5179.       IF( IP.NE.2) GOTO 6
  5180.       IF( IPERF.EQ.1) GOTO 5
  5181.       ZRATX= ZRATI
  5182.       RMAG= SQRT( ZP* ZP+ RH* RH)
  5183. C                                                                       
  5184. C     SET PARAMETERS FOR RADIAL WIRE GROUND SCREEN.                     
  5185. C                                                                       
  5186.       XYMAG= SQRT( XIJ* XIJ+ YIJ* YIJ)
  5187.       IF( NRADL.EQ.0) GOTO 2
  5188.       XSPEC=( XI* ZJ+ ZI* XJ)/( ZI+ ZJ)
  5189.       YSPEC=( YI* ZJ+ ZI* YJ)/( ZI+ ZJ)
  5190.       RHOSPC= SQRT( XSPEC* XSPEC+ YSPEC* YSPEC+ T2* T2)
  5191.       IF( RHOSPC.GT. SCRWL) GOTO 2
  5192.       RRV= T1* RHOSPC* LOG( RHOSPC/ T2)
  5193.       ZRATX=( RRV* ZRATI)/( ETA* ZRATI+ RRV)
  5194. C                                                                       
  5195. C     CALCULATION OF REFLECTION COEFFICIENTS WHEN GROUND IS SPECIFIED.  
  5196. C                                                                       
  5197.     2 IF( XYMAG.GT.1.D-6) GOTO 3
  5198.       PX=0.
  5199.       PY=0.
  5200.       CTH=1.
  5201.       RRV=(1.,0.)
  5202.       GOTO 4
  5203.     3 PX=- YIJ/ XYMAG
  5204.       PY= XIJ/ XYMAG
  5205.       CTH= ZIJ/ RMAG
  5206.       RRV= SQRT(1.- ZRATX* ZRATX*(1.- CTH* CTH))
  5207.     4 RRH= ZRATX* CTH
  5208.       RRH=-( RRH- RRV)/( RRH+ RRV)
  5209.       RRV= ZRATX* RRV
  5210.       RRV=( CTH- RRV)/( CTH+ RRV)
  5211.       QY=( PHX* PX+ PHY* PY)*( RRV- RRH)
  5212.       QX= QY* PX+ PHX* RRH
  5213.       QY= QY* PY+ PHY* RRH
  5214.       QZ= PHZ* RRH
  5215.       EXK= EXK- HPK* QX
  5216.       EYK= EYK- HPK* QY
  5217.       EZK= EZK- HPK* QZ
  5218.       EXS= EXS- HPS* QX
  5219.       EYS= EYS- HPS* QY
  5220.       EZS= EZS- HPS* QZ
  5221.       EXC= EXC- HPC* QX
  5222.       EYC= EYC- HPC* QY
  5223.       EZC= EZC- HPC* QZ
  5224.       GOTO 7
  5225.     5 EXK= EXK- HPK* PHX
  5226.       EYK= EYK- HPK* PHY
  5227.       EZK= EZK- HPK* PHZ
  5228.       EXS= EXS- HPS* PHX
  5229.       EYS= EYS- HPS* PHY
  5230.       EZS= EZS- HPS* PHZ
  5231.       EXC= EXC- HPC* PHX
  5232.       EYC= EYC- HPC* PHY
  5233.       EZC= EZC- HPC* PHZ
  5234.       GOTO 7
  5235.     6 EXK= HPK* PHX
  5236.       EYK= HPK* PHY
  5237.       EZK= HPK* PHZ
  5238.       EXS= HPS* PHX
  5239.       EYS= HPS* PHY
  5240.       EZS= HPS* PHZ
  5241.       EXC= HPC* PHX
  5242.       EYC= HPC* PHY
  5243.       EZC= HPC* PHZ
  5244.     7 CONTINUE
  5245.       RETURN
  5246.       END
  5247. C ***
  5248. C     DOUBLE PRECISION 6/4/85
  5249. C
  5250.       SUBROUTINE HSFLX( S, RH, ZPX, HPK, HPS, HPC)
  5251. C ***
  5252. C     CALCULATES H FIELD OF SINE COSINE, AND CONSTANT CURRENT OF SEGMENT
  5253.       IMPLICIT REAL (A-H,O-Z)
  5254.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  5255.       COMPLEX  FJ, FJK, EKR1, EKR2, T1, T2, CONS, HPS, HPC, HPK
  5256.       DIMENSION  FJX(2), FJKX(2)
  5257.       EQUIVALENCE(FJ,FJX),(FJK,FJKX)
  5258.       DATA   TP/6.283185308D+0/, FJX/0.,1./, FJKX/0.,-6.283185308D+0/
  5259.       DATA   PI8/25.13274123D+0/
  5260.       IF( RH.LT.1.D-10) GOTO 6
  5261.       IF( ZPX.LT.0.) GOTO 1
  5262.       ZP= ZPX
  5263.       HSS=1.
  5264.       GOTO 2
  5265.     1 ZP=- ZPX
  5266.       HSS=-1.
  5267.     2 DH=.5* S
  5268.       Z1= ZP+ DH
  5269.       Z2= ZP- DH
  5270.       IF( Z2.LT.1.D-7) GOTO 3
  5271.       RHZ= RH/ Z2
  5272.       GOTO 4
  5273.     3 RHZ=1.
  5274.     4 DK= TP* DH
  5275.       CDK= COS( DK)
  5276.       SDK= SIN( DK)
  5277.       CALL HFK(- DK, DK, RH* TP, ZP* TP, HKR, HKI)
  5278.       HPK= CMPLX( HKR, HKI)
  5279.       IF( RHZ.LT.1.D-3) GOTO 5
  5280.       RH2= RH* RH
  5281.       R1= SQRT( RH2+ Z1* Z1)
  5282.       R2= SQRT( RH2+ Z2* Z2)
  5283.       EKR1= EXP( FJK* R1)
  5284.       EKR2= EXP( FJK* R2)
  5285.       T1= Z1* EKR1/ R1
  5286.       T2= Z2* EKR2/ R2
  5287.       HPS=( CDK*( EKR2- EKR1)- FJ* SDK*( T2+ T1))* HSS
  5288.       HPC=- SDK*( EKR2+ EKR1)- FJ* CDK*( T2- T1)
  5289.       CONS=- FJ/(2.* TP* RH)
  5290.       HPS= CONS* HPS
  5291.       HPC= CONS* HPC
  5292.       RETURN
  5293.     5 EKR1= CMPLX( CDK, SDK)/( Z2* Z2)
  5294.       EKR2= CMPLX( CDK,- SDK)/( Z1* Z1)
  5295.       T1= TP*(1./ Z1-1./ Z2)
  5296.       T2= EXP( FJK* ZP)* RH/ PI8
  5297.       HPS= T2*( T1+( EKR1+ EKR2)* SDK)* HSS
  5298.       HPC= T2*(- FJ* T1+( EKR1- EKR2)* CDK)
  5299.       RETURN
  5300.     6 HPS=(0.,0.)
  5301.       HPC=(0.,0.)
  5302.       HPK=(0.,0.)
  5303.       RETURN
  5304.       END
  5305. C ***
  5306. C     DOUBLE PRECISION 6/4/85
  5307. C
  5308.       SUBROUTINE INTRP( X, Y, F1, F2, F3, F4)
  5309. C ***
  5310. C                                                                       
  5311. C     INTRP USES BIVARIATE CUBIC INTERPOLATION TO OBTAIN THE VALUES OF  
  5312. C     4 FUNCTIONS AT THE POINT (X,Y).                                   
  5313. C                                                                       
  5314.       IMPLICIT REAL (A-H,O-Z)
  5315.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  5316.       COMPLEX  F1, F2, F3, F4, A, B, C, D, FX1, FX2, FX3, FX4, P1, 
  5317.      &P2, P3, P4, A11, A12, A13, A14, A21, A22, A23, A24, A31, A32, A33
  5318.      &, A34, A41, A42, A43, A44, B11, B12, B13, B14, B21, B22, B23, B24
  5319.      &, B31, B32, B33, B34, B41, B42, B43, B44, C11, C12, C13, C14, C21
  5320.      &, C22, C23, C24, C31, C32, C33, C34, C41, C42, C43, C44, D11, D12
  5321.      &, D13, D14, D21, D22, D23, D24, D31, D32, D33, D34, D41, D42, D43
  5322.      &, D44
  5323.       COMPLEX  AR1, AR2, AR3, ARL1, ARL2, ARL3, EPSCF
  5324.       COMMON  /GGRID/ AR1(11,10,4), AR2(17,5,4), AR3(9,8,4), EPSCF, DXA
  5325.      &(3), DYA(3), XSA(3), YSA(3), NXA(3), NYA(3)
  5326.       DIMENSION  NDA(3), NDPA(3)
  5327.       DIMENSION  A(4,4), B(4,4), C(4,4), D(4,4), ARL1(1), ARL2(1), ARL3
  5328.      &(1)
  5329.       EQUIVALENCE(A(1,1),A11),(A(1,2),A12),(A(1,3),A13),(A(1,4),A14)
  5330.       EQUIVALENCE(A(2,1),A21),(A(2,2),A22),(A(2,3),A23),(A(2,4),A24)
  5331.       EQUIVALENCE(A(3,1),A31),(A(3,2),A32),(A(3,3),A33),(A(3,4),A34)
  5332.       EQUIVALENCE(A(4,1),A41),(A(4,2),A42),(A(4,3),A43),(A(4,4),A44)
  5333.       EQUIVALENCE(B(1,1),B11),(B(1,2),B12),(B(1,3),B13),(B(1,4),B14)
  5334.       EQUIVALENCE(B(2,1),B21),(B(2,2),B22),(B(2,3),B23),(B(2,4),B24)
  5335.       EQUIVALENCE(B(3,1),B31),(B(3,2),B32),(B(3,3),B33),(B(3,4),B34)
  5336.       EQUIVALENCE(B(4,1),B41),(B(4,2),B42),(B(4,3),B43),(B(4,4),B44)
  5337.       EQUIVALENCE(C(1,1),C11),(C(1,2),C12),(C(1,3),C13),(C(1,4),C14)
  5338.       EQUIVALENCE(C(2,1),C21),(C(2,2),C22),(C(2,3),C23),(C(2,4),C24)
  5339.       EQUIVALENCE(C(3,1),C31),(C(3,2),C32),(C(3,3),C33),(C(3,4),C34)
  5340.       EQUIVALENCE(C(4,1),C41),(C(4,2),C42),(C(4,3),C43),(C(4,4),C44)
  5341.       EQUIVALENCE(D(1,1),D11),(D(1,2),D12),(D(1,3),D13),(D(1,4),D14)
  5342.       EQUIVALENCE(D(2,1),D21),(D(2,2),D22),(D(2,3),D23),(D(2,4),D24)
  5343.       EQUIVALENCE(D(3,1),D31),(D(3,2),D32),(D(3,3),D33),(D(3,4),D34)
  5344.       EQUIVALENCE(D(4,1),D41),(D(4,2),D42),(D(4,3),D43),(D(4,4),D44)
  5345.       EQUIVALENCE(ARL1,AR1),(ARL2,AR2),(ARL3,AR3),(XS2,XSA(2)),(YS3,YSA
  5346.      &(3))
  5347.       DATA   IXS, IYS, IGRS/-10,-10,-10/, DX, DY, XS, YS/1.,1.,0.,0./
  5348.       DATA   NDA/11,17,9/, NDPA/110,85,72/, IXEG, IYEG/0,0/
  5349.       IF( X.LT. XS.OR. Y.LT. YS) GOTO 1
  5350.       IX= INT(( X- XS)/ DX)+1
  5351. C                                                                       
  5352. C     IF POINT LIES IN SAME 4 BY 4 POINT REGION AS PREVIOUS POINT, OLD  
  5353. C     VALUES ARE REUSED                                                 
  5354. C                                                                       
  5355.       IY= INT(( Y- YS)/ DY)+1
  5356.       IF( IX.LT. IXEG.OR. IY.LT. IYEG) GOTO 1
  5357. C                                                                       
  5358. C     DETERMINE CORRECT GRID AND GRID REGION                            
  5359. C                                                                       
  5360.       IF( IABS( IX- IXS).LT.2.AND. IABS( IY- IYS).LT.2) GOTO 12
  5361.     1 IF( X.GT. XS2) GOTO 2
  5362.       IGR=1
  5363.       GOTO 3
  5364.     2 IGR=2
  5365.       IF( Y.GT. YS3) IGR=3
  5366.     3 IF( IGR.EQ. IGRS) GOTO 4
  5367.       IGRS= IGR
  5368.       DX= DXA( IGRS)
  5369.       DY= DYA( IGRS)
  5370.       XS= XSA( IGRS)
  5371.       YS= YSA( IGRS)
  5372.       NXM2= NXA( IGRS)-2
  5373.       NYM2= NYA( IGRS)-2
  5374.       NXMS=(( NXM2+1)/3)*3+1
  5375.       NYMS=(( NYM2+1)/3)*3+1
  5376.       ND= NDA( IGRS)
  5377.       NDP= NDPA( IGRS)
  5378.       IX= INT(( X- XS)/ DX)+1
  5379.       IY= INT(( Y- YS)/ DY)+1
  5380.     4 IXS=(( IX-1)/3)*3+2
  5381.       IF( IXS.LT.2) IXS=2
  5382.       IXEG=-10000
  5383.       IF( IXS.LE. NXM2) GOTO 5
  5384.       IXS= NXM2
  5385.       IXEG= NXMS
  5386.     5 IYS=(( IY-1)/3)*3+2
  5387.       IF( IYS.LT.2) IYS=2
  5388.       IYEG=-10000
  5389.       IF( IYS.LE. NYM2) GOTO 6
  5390.       IYS= NYM2
  5391. C                                                                       
  5392. C     COMPUTE COEFFICIENTS OF 4 CUBIC POLYNOMIALS IN X FOR THE 4 GRID   
  5393. C     VALUES OF Y FOR EACH OF THE 4 FUNCTIONS                           
  5394. C                                                                       
  5395.       IYEG= NYMS
  5396.     6 IADZ= IXS+( IYS-3)* ND- NDP
  5397.       DO 11  K=1,4
  5398.       IADZ= IADZ+ NDP
  5399.       IADD= IADZ
  5400.       DO 11  I=1,4
  5401.       IADD= IADD+ ND
  5402. C     P1=AR1(IXS-1,IYS-2+I,K)                                           
  5403.       GOTO (7,8,9), IGRS
  5404.     7 P1= ARL1( IADD-1)
  5405.       P2= ARL1( IADD)
  5406.       P3= ARL1( IADD+1)
  5407.       P4= ARL1( IADD+2)
  5408.       GOTO 10
  5409.     8 P1= ARL2( IADD-1)
  5410.       P2= ARL2( IADD)
  5411.       P3= ARL2( IADD+1)
  5412.       P4= ARL2( IADD+2)
  5413.       GOTO 10
  5414.     9 P1= ARL3( IADD-1)
  5415.       P2= ARL3( IADD)
  5416.       P3= ARL3( IADD+1)
  5417.       P4= ARL3( IADD+2)
  5418.    10 A( I, K)=( P4- P1+3.*( P2- P3))*.1666666667D+0
  5419.       B( I, K)=( P1-2.* P2+ P3)*.5
  5420.       C( I, K)= P3-(2.* P1+3.* P2+ P4)*.1666666667D+0
  5421.    11 D( I, K)= P2
  5422.       XZ=( IXS-1)* DX+ XS
  5423. C                                                                       
  5424. C     EVALUATE POLYMOMIALS IN X AND THEN USE CUBIC INTERPOLATION IN Y   
  5425. C     FOR EACH OF THE 4 FUNCTIONS.                                      
  5426. C                                                                       
  5427.       YZ=( IYS-1)* DY+ YS
  5428.    12 XX=( X- XZ)/ DX
  5429.       YY=( Y- YZ)/ DY
  5430.       FX1=(( A11* XX+ B11)* XX+ C11)* XX+ D11
  5431.       FX2=(( A21* XX+ B21)* XX+ C21)* XX+ D21
  5432.       FX3=(( A31* XX+ B31)* XX+ C31)* XX+ D31
  5433.       FX4=(( A41* XX+ B41)* XX+ C41)* XX+ D41
  5434.       P1= FX4- FX1+3.*( FX2- FX3)
  5435.       P2=3.*( FX1-2.* FX2+ FX3)
  5436.       P3=6.* FX3-2.* FX1-3.* FX2- FX4
  5437.       F1=(( P1* YY+ P2)* YY+ P3)* YY*.1666666667D+0+ FX2
  5438.       FX1=(( A12* XX+ B12)* XX+ C12)* XX+ D12
  5439.       FX2=(( A22* XX+ B22)* XX+ C22)* XX+ D22
  5440.       FX3=(( A32* XX+ B32)* XX+ C32)* XX+ D32
  5441.       FX4=(( A42* XX+ B42)* XX+ C42)* XX+ D42
  5442.       P1= FX4- FX1+3.*( FX2- FX3)
  5443.       P2=3.*( FX1-2.* FX2+ FX3)
  5444.       P3=6.* FX3-2.* FX1-3.* FX2- FX4
  5445.       F2=(( P1* YY+ P2)* YY+ P3)* YY*.1666666667D+0+ FX2
  5446.       FX1=(( A13* XX+ B13)* XX+ C13)* XX+ D13
  5447.       FX2=(( A23* XX+ B23)* XX+ C23)* XX+ D23
  5448.       FX3=(( A33* XX+ B33)* XX+ C33)* XX+ D33
  5449.       FX4=(( A43* XX+ B43)* XX+ C43)* XX+ D43
  5450.       P1= FX4- FX1+3.*( FX2- FX3)
  5451.       P2=3.*( FX1-2.* FX2+ FX3)
  5452.       P3=6.* FX3-2.* FX1-3.* FX2- FX4
  5453.       F3=(( P1* YY+ P2)* YY+ P3)* YY*.1666666667D+0+ FX2
  5454.       FX1=(( A14* XX+ B14)* XX+ C14)* XX+ D14
  5455.       FX2=(( A24* XX+ B24)* XX+ C24)* XX+ D24
  5456.       FX3=(( A34* XX+ B34)* XX+ C34)* XX+ D34
  5457.       FX4=(( A44* XX+ B44)* XX+ C44)* XX+ D44
  5458.       P1= FX4- FX1+3.*( FX2- FX3)
  5459.       P2=3.*( FX1-2.* FX2+ FX3)
  5460.       P3=6.* FX3-2.* FX1-3.* FX2- FX4
  5461.       F4=(( P1* YY+ P2)* YY+ P3)* YY*.1666666667D+0+ FX2
  5462.       RETURN
  5463.       END
  5464. C ***
  5465. C     DOUBLE PRECISION 6/4/85
  5466. C
  5467.       SUBROUTINE INTX( EL1, EL2, B, IJ, SGR, SGI)
  5468. C ***
  5469. C                                                                       
  5470. C     INTX PERFORMS NUMERICAL INTEGRATION OF EXP(JKR)/R BY THE METHOD OF
  5471. C     VARIABLE INTERVAL WIDTH ROMBERG INTEGRATION.  THE INTEGRAND VALUE 
  5472. C     IS SUPPLIED BY SUBROUTINE GF.                                     
  5473. C                                                                       
  5474.       IMPLICIT REAL (A-H,O-Z)
  5475.       DATA   NX, NM, NTS, RX/1,65536,4,1.D-4/
  5476.       Z= EL1
  5477.       ZE= EL2
  5478.       IF( IJ.EQ.0) ZE=0.
  5479.       S= ZE- Z
  5480.       FNM= NM
  5481.       EP= S/(10.* FNM)
  5482.       ZEND= ZE- EP
  5483.       SGR=0.
  5484.       SGI=0.
  5485.       NS= NX
  5486.       NT=0
  5487.       CALL GF( Z, G1R, G1I)
  5488.     1 FNS= NS
  5489.       DZ= S/ FNS
  5490.       ZP= Z+ DZ
  5491.       IF( ZP- ZE) 3,3,2
  5492.     2 DZ= ZE- Z
  5493.       IF( ABS( DZ)- EP) 17,17,3
  5494.     3 DZOT= DZ*.5
  5495.       ZP= Z+ DZOT
  5496.       CALL GF( ZP, G3R, G3I)
  5497.       ZP= Z+ DZ
  5498.       CALL GF( ZP, G5R, G5I)
  5499.     4 T00R=( G1R+ G5R)* DZOT
  5500.       T00I=( G1I+ G5I)* DZOT
  5501.       T01R=( T00R+ DZ* G3R)*0.5
  5502.       T01I=( T00I+ DZ* G3I)*0.5
  5503.       T10R=(4.0* T01R- T00R)/3.0
  5504. C                                                                       
  5505. C     TEST CONVERGENCE OF 3 POINT ROMBERG RESULT.                       
  5506. C                                                                       
  5507.       T10I=(4.0* T01I- T00I)/3.0
  5508.       CALL TEST( T01R, T10R, TE1R, T01I, T10I, TE1I,0.)
  5509.       IF( TE1I- RX) 5,5,6
  5510.     5 IF( TE1R- RX) 8,8,6
  5511.     6 ZP= Z+ DZ*0.25
  5512.       CALL GF( ZP, G2R, G2I)
  5513.       ZP= Z+ DZ*0.75
  5514.       CALL GF( ZP, G4R, G4I)
  5515.       T02R=( T01R+ DZOT*( G2R+ G4R))*0.5
  5516.       T02I=( T01I+ DZOT*( G2I+ G4I))*0.5
  5517.       T11R=(4.0* T02R- T01R)/3.0
  5518.       T11I=(4.0* T02I- T01I)/3.0
  5519.       T20R=(16.0* T11R- T10R)/15.0
  5520. C                                                                       
  5521. C     TEST CONVERGENCE OF 5 POINT ROMBERG RESULT.                       
  5522. C                                                                       
  5523.       T20I=(16.0* T11I- T10I)/15.0
  5524.       CALL TEST( T11R, T20R, TE2R, T11I, T20I, TE2I,0.)
  5525.       IF( TE2I- RX) 7,7,14
  5526.     7 IF( TE2R- RX) 9,9,14
  5527.     8 SGR= SGR+ T10R
  5528.       SGI= SGI+ T10I
  5529.       NT= NT+2
  5530.       GOTO 10
  5531.     9 SGR= SGR+ T20R
  5532.       SGI= SGI+ T20I
  5533.       NT= NT+1
  5534.    10 Z= Z+ DZ
  5535.       IF( Z- ZEND) 11,17,17
  5536.    11 G1R= G5R
  5537.       G1I= G5I
  5538.       IF( NT- NTS) 1,12,12
  5539. C                                                                       
  5540. C     DOUBLE STEP SIZE                                                  
  5541. C                                                                       
  5542.    12 IF( NS- NX) 1,1,13
  5543.    13 NS= NS/2
  5544.       NT=1
  5545.       GOTO 1
  5546.    14 NT=0
  5547.       IF( NS- NM) 16,15,15
  5548.    15 WRITE( 6,20)  Z
  5549. C                                                                       
  5550. C     HALVE STEP SIZE                                                   
  5551. C                                                                       
  5552.       GOTO 9
  5553.    16 NS= NS*2
  5554.       FNS= NS
  5555.       DZ= S/ FNS
  5556.       DZOT= DZ*0.5
  5557.       G5R= G3R
  5558.       G5I= G3I
  5559.       G3R= G2R
  5560.       G3I= G2I
  5561.       GOTO 4
  5562.    17 CONTINUE
  5563. C                                                                       
  5564. C     ADD CONTRIBUTION OF NEAR SINGULARITY FOR DIAGONAL TERM            
  5565. C                                                                       
  5566.       IF( IJ) 19,18,19
  5567.    18 SGR=2.*( SGR+ LOG(( SQRT( B* B+ S* S)+ S)/ B))
  5568.       SGI=2.* SGI
  5569.    19 CONTINUE
  5570. C                                                                       
  5571.       RETURN
  5572.    20 FORMAT(' STEP SIZE LIMITED AT Z=',F10.5)
  5573.       END
  5574. C ***
  5575. C     DOUBLE PRECISION 6/4/85
  5576. C
  5577.       FUNCTION ISEGNO( ITAGI, MX)
  5578. C ***
  5579. C                                                                       
  5580. C     ISEGNO RETURNS THE SEGMENT NUMBER OF THE MTH SEGMENT HAVING THE   
  5581. C     TAG NUMBER ITAGI.  IF ITAGI=0 SEGMENT NUMBER M IS RETURNED.       
  5582. C                                                                       
  5583.       IMPLICIT REAL (A-H,O-Z)
  5584.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  5585.       COMMON  /DATA/ LD, N1, N2, N, NP, M1, M2, M, MP, X( NM), Y( NM), 
  5586.      &Z( NM), SI( NM), BI( NM), ALP( NM), BET( NM), ICON1( N2M), ICON2(
  5587.      & N2M), ITAG( N2M), ICONX( NM), WLAM, IPSYM
  5588.       IF( MX.GT.0) GOTO 1
  5589.       WRITE( 6,6) 
  5590.       STOP
  5591.     1 ICNT=0
  5592.       IF( ITAGI.NE.0) GOTO 2
  5593.       ISEGNO= MX
  5594.       RETURN
  5595.     2 IF( N.LT.1) GOTO 4
  5596.       DO 3  I=1, N
  5597.       IF( ITAG( I).NE. ITAGI) GOTO 3
  5598.       ICNT= ICNT+1
  5599.       IF( ICNT.EQ. MX) GOTO 5
  5600.     3 CONTINUE
  5601.     4 WRITE( 6,7)  ITAGI
  5602.       STOP
  5603.     5 ISEGNO= I
  5604. C                                                                       
  5605.       RETURN
  5606.     6 FORMAT(4X,'CHECK DATA, PARAMETER SPECIFYING SEGMENT POSITION IN',
  5607.      &' A GROUP OF EQUAL TAGS MUST NOT BE ZERO')
  5608.     7 FORMAT(///,10X,'NO SEGMENT HAS AN ITAG OF ',I5)
  5609.       END
  5610. C ***
  5611. C     DOUBLE PRECISION 6/4/85
  5612. C
  5613.       SUBROUTINE LFACTR( A, NROW, IX1, IX2, IP)
  5614. C ***
  5615. C                                                                       
  5616. C     LFACTR PERFORMS GAUSS-DOOLITTLE MANIPULATIONS ON THE TWO BLOCKS OF
  5617. C     THE TRANSPOSED MATRIX IN CORE STORAGE.  THE GAUSS-DOOLITTLE       
  5618. C     ALGORITHM IS PRESENTED ON PAGES 411-416 OF A. RALSTON -- A FIRST  
  5619. C     COURSE IN NUMERICAL ANALYSIS.  COMMENTS BELOW REFER TO COMMENTS IN
  5620. C     RALSTONS TEXT.                                                    
  5621. C                                                                       
  5622.       IMPLICIT REAL (A-H,O-Z)
  5623.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  5624.       COMPLEX  A, D, AJR
  5625.       INTEGER  R, R1, R2, PJ, PR
  5626.       LOGICAL  L1, L2, L3
  5627.       COMMON  /MATPAR/ ICASE, NBLOKS, NPBLK, NLAST, NBLSYM, NPSYM, 
  5628.      &NLSYM, IMAT, ICASX, NBBX, NPBX, NLBX, NBBL, NPBL, NLBL
  5629.       COMMON  /SCRATM/ D( N2M)
  5630.       DIMENSION  A( NROW,1), IP( NROW)
  5631. C                                                                       
  5632. C     INITIALIZE R1,R2,J1,J2                                            
  5633. C                                                                       
  5634.       IFLG=0
  5635.       L1= IX1.EQ.1.AND. IX2.EQ.2
  5636.       L2=( IX2-1).EQ. IX1
  5637.       L3= IX2.EQ. NBLSYM
  5638.       IF( L1) GOTO 1
  5639.       GOTO 2
  5640.     1 R1=1
  5641.       R2=2* NPSYM
  5642.       J1=1
  5643.       J2=-1
  5644.       GOTO 5
  5645.     2 R1= NPSYM+1
  5646.       R2=2* NPSYM
  5647.       J1=( IX1-1)* NPSYM+1
  5648.       IF( L2) GOTO 3
  5649.       GOTO 4
  5650.     3 J2= J1+ NPSYM-2
  5651.       GOTO 5
  5652.     4 J2= J1+ NPSYM-1
  5653.     5 IF( L3) R2= NPSYM+ NLSYM
  5654. C                                                                       
  5655. C     STEP 1                                                            
  5656. C                                                                       
  5657.       DO 16  R= R1, R2
  5658.       DO 6  K= J1, NROW
  5659.       D( K)= A( K, R)
  5660. C                                                                       
  5661. C     STEPS 2 AND 3                                                     
  5662. C                                                                       
  5663.     6 CONTINUE
  5664.       IF( L1.OR. L2) J2= J2+1
  5665.       IF( J1.GT. J2) GOTO 9
  5666.       IXJ=0
  5667.       DO 8  J= J1, J2
  5668.       IXJ= IXJ+1
  5669.       PJ= IP( J)
  5670.       AJR= D( PJ)
  5671.       A( J, R)= AJR
  5672.       D( PJ)= D( J)
  5673.       JP1= J+1
  5674.       DO 7  I= JP1, NROW
  5675.       D( I)= D( I)- A( I, IXJ)* AJR
  5676.     7 CONTINUE
  5677.     8 CONTINUE
  5678. C                                                                       
  5679. C     STEP 4                                                            
  5680. C                                                                       
  5681.     9 CONTINUE
  5682.       J2P1= J2+1
  5683.       IF( L1.OR. L2) GOTO 11
  5684.       IF( NROW.LT. J2P1) GOTO 16
  5685.       DO 10  I= J2P1, NROW
  5686.       A( I, R)= D( I)
  5687.    10 CONTINUE
  5688.       GOTO 16
  5689.    11 DMAX= REAL( D( J2P1)* CONJG( D( J2P1)))
  5690.       IP( J2P1)= J2P1
  5691.       J2P2= J2+2
  5692.       IF( J2P2.GT. NROW) GOTO 13
  5693.       DO 12  I= J2P2, NROW
  5694.       ELMAG= REAL( D( I)* CONJG( D( I)))
  5695.       IF( ELMAG.LT. DMAX) GOTO 12
  5696.       DMAX= ELMAG
  5697.       IP( J2P1)= I
  5698.    12 CONTINUE
  5699.    13 CONTINUE
  5700.       IF( DMAX.LT.1.D-10) IFLG=1
  5701.       PR= IP( J2P1)
  5702.       A( J2P1, R)= D( PR)
  5703. C                                                                       
  5704. C     STEP 5                                                            
  5705. C                                                                       
  5706.       D( PR)= D( J2P1)
  5707.       IF( J2P2.GT. NROW) GOTO 15
  5708.       AJR=1./ A( J2P1, R)
  5709.       DO 14  I= J2P2, NROW
  5710.       A( I, R)= D( I)* AJR
  5711.    14 CONTINUE
  5712.    15 CONTINUE
  5713.       IF( IFLG.EQ.0) GOTO 16
  5714.       WRITE( 6,17)  J2, DMAX
  5715.       IFLG=0
  5716.    16 CONTINUE
  5717. C                                                                       
  5718.       RETURN
  5719.    17 FORMAT(' ','PIVOT(,I3,2H)=',1P,E16.8)
  5720.       END
  5721. C ***
  5722. C     DOUBLE PRECISION 6/4/85
  5723. C
  5724.       SUBROUTINE LOAD( LDTYP, LDTAG, LDTAGF, LDTAGT, ZLR, ZLI, ZLC)
  5725. C ***
  5726. C                                                                       
  5727. C     LOAD CALCULATES THE IMPEDANCE OF SPECIFIED SEGMENTS FOR VARIOUS   
  5728. C     TYPES OF LOADING                                                  
  5729. C                                                                       
  5730.       IMPLICIT REAL (A-H,O-Z)
  5731.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  5732.       COMPLEX  ZARRAY, ZT, TPCJ, ZINT
  5733.       COMMON  /DATA/ LD, N1, N2, N, NP, M1, M2, M, MP, X( NM), Y( NM), 
  5734.      &Z( NM), SI( NM), BI( NM), ALP( NM), BET( NM), ICON1( N2M), ICON2(
  5735.      & N2M), ITAG( N2M), ICONX( NM), WLAM, IPSYM
  5736.       COMMON  /ZLOAD/ ZARRAY( NM), NLOAD, NLODF
  5737.       DIMENSION  LDTYP(1), LDTAG(1), LDTAGF(1), LDTAGT(1), ZLR(1), ZLI(
  5738.      &1), ZLC(1), TPCJX(2)
  5739.       EQUIVALENCE(TPCJ,TPCJX)
  5740. C                                                                       
  5741. C     WRITE(6,HEADING)                                                  
  5742. C                                                                       
  5743.       DATA   TPCJX/0.,1.883698955D+9/
  5744. C                                                                       
  5745. C     INITIALIZE D ARRAY, USED FOR TEMPORARY STORAGE OF LOADING         
  5746. C     INFORMATION.                                                      
  5747. C                                                                       
  5748.       WRITE( 6,25) 
  5749.       DO 1  I= N2, N
  5750.     1 ZARRAY( I)=(0.,0.)
  5751. C                                                                       
  5752. C     CYCLE OVER LOADING CARDS                                          
  5753. C                                                                       
  5754.       IWARN=0
  5755.       ISTEP=0
  5756.     2 ISTEP= ISTEP+1
  5757.       IF( ISTEP.LE. NLOAD) GOTO 5
  5758.       IF( IWARN.EQ.1) WRITE( 6,26) 
  5759.       IF( N1+2* M1.GT.0) GOTO 4
  5760.       NOP= N/ NP
  5761.       IF( NOP.EQ.1) GOTO 4
  5762.       DO 3  I=1, NP
  5763.       ZT= ZARRAY( I)
  5764.       L1= I
  5765.       DO 3  L2=2, NOP
  5766.       L1= L1+ NP
  5767.     3 ZARRAY( L1)= ZT
  5768.     4 RETURN
  5769.     5 IF( LDTYP( ISTEP).LE.5) GOTO 6
  5770.       WRITE( 6,27)  LDTYP( ISTEP)
  5771.       STOP
  5772.     6 LDTAGS= LDTAG( ISTEP)
  5773.       JUMP= LDTYP( ISTEP)+1
  5774. C                                                                       
  5775. C     SEARCH SEGMENTS FOR PROPER ITAGS                                  
  5776. C                                                                       
  5777.       ICHK=0
  5778.       L1= N2
  5779.       L2= N
  5780.       IF( LDTAGS.NE.0) GOTO 7
  5781.       IF( LDTAGF( ISTEP).EQ.0.AND. LDTAGT( ISTEP).EQ.0) GOTO 7
  5782.       L1= LDTAGF( ISTEP)
  5783.       L2= LDTAGT( ISTEP)
  5784.       IF( L1.GT. N1) GOTO 7
  5785.       WRITE( 6,29) 
  5786.       STOP
  5787.     7 DO 17  I= L1, L2
  5788.       IF( LDTAGS.EQ.0) GOTO 8
  5789.       IF( LDTAGS.NE. ITAG( I)) GOTO 17
  5790.       IF( LDTAGF( ISTEP).EQ.0) GOTO 8
  5791.       ICHK= ICHK+1
  5792.       IF( ICHK.GE. LDTAGF( ISTEP).AND. ICHK.LE. LDTAGT( ISTEP)) GOTO 9
  5793.       GOTO 17
  5794. C                                                                       
  5795. C     CALCULATION OF LAMDA*IMPED. PER UNIT LENGTH, JUMP TO APPROPRIATE  
  5796. C     SECTION FOR LOADING TYPE                                          
  5797. C                                                                       
  5798.     8 ICHK=1
  5799.     9 GOTO (10,11,12,13,14,15), JUMP
  5800.    10 ZT= ZLR( ISTEP)/ SI( I)+ TPCJ* ZLI( ISTEP)/( SI( I)* WLAM)
  5801.       IF( ABS( ZLC( ISTEP)).GT.1.D-20) ZT= ZT+ WLAM/( TPCJ* SI( I)* ZLC
  5802.      &( ISTEP))
  5803.       GOTO 16
  5804.    11 ZT= TPCJ* SI( I)* ZLC( ISTEP)/ WLAM
  5805.       IF( ABS( ZLI( ISTEP)).GT.1.D-20) ZT= ZT+ SI( I)* WLAM/( TPCJ* ZLI
  5806.      &( ISTEP))
  5807.       IF( ABS( ZLR( ISTEP)).GT.1.D-20) ZT= ZT+ SI( I)/ ZLR( ISTEP)
  5808.       ZT=1./ ZT
  5809.       GOTO 16
  5810.    12 ZT= ZLR( ISTEP)* WLAM+ TPCJ* ZLI( ISTEP)
  5811.       IF( ABS( ZLC( ISTEP)).GT.1.D-20) ZT= ZT+1./( TPCJ* SI( I)* SI( I)
  5812.      &* ZLC( ISTEP))
  5813.       GOTO 16
  5814.    13 ZT= TPCJ* SI( I)* SI( I)* ZLC( ISTEP)
  5815.       IF( ABS( ZLI( ISTEP)).GT.1.D-20) ZT= ZT+1./( TPCJ* ZLI( ISTEP))
  5816.       IF( ABS( ZLR( ISTEP)).GT.1.D-20) ZT= ZT+1./( ZLR( ISTEP)* WLAM)
  5817.       ZT=1./ ZT
  5818.       GOTO 16
  5819.    14 ZT= CMPLX( ZLR( ISTEP), ZLI( ISTEP))/ SI( I)
  5820.       GOTO 16
  5821.    15 ZT= ZINT( ZLR( ISTEP)* WLAM, BI( I))
  5822.    16 IF(( ABS( REAL( ZARRAY( I)))+ ABS( AIMAG( ZARRAY( I)))).GT.1.D-20
  5823.      &) IWARN=1
  5824.       ZARRAY( I)= ZARRAY( I)+ ZT
  5825.    17 CONTINUE
  5826.       IF( ICHK.NE.0) GOTO 18
  5827.       WRITE( 6,28)  LDTAGS
  5828. C                                                                       
  5829. C     PRINTING THE SEGMENT LOADING DATA, JUMP TO PROPER PRINT           
  5830. C                                                                       
  5831.       STOP
  5832.    18 GOTO (19,20,21,22,23,24), JUMP
  5833.    19 CALL PRNT( LDTAGS, LDTAGF( ISTEP), LDTAGT( ISTEP), ZLR( ISTEP), 
  5834.      &ZLI( ISTEP), ZLC( ISTEP),0.,0.,0.,8H SERIES ,2)
  5835.       GOTO 2
  5836.    20 CALL PRNT( LDTAGS, LDTAGF( ISTEP), LDTAGT( ISTEP), ZLR( ISTEP), 
  5837.      &ZLI( ISTEP), ZLC( ISTEP),0.,0.,0.,8HPARALLEL,2)                
  5838.       GOTO 2
  5839.    21 CALL PRNT( LDTAGS, LDTAGF( ISTEP), LDTAGT( ISTEP), ZLR( ISTEP), 
  5840.      &ZLI( ISTEP), ZLC( ISTEP),0.,0.,0.,18HSERIES (PER METER),5)
  5841.       GOTO 2
  5842.    22 CALL PRNT( LDTAGS, LDTAGF( ISTEP), LDTAGT( ISTEP), ZLR( ISTEP), 
  5843.      &ZLI( ISTEP), ZLC( ISTEP),0.,0.,0.,20HPARALLEL (PER METER),5)
  5844.       GOTO 2
  5845.    23 CALL PRNT( LDTAGS, LDTAGF( ISTEP), LDTAGT( ISTEP),0.,0.,0., ZLR( 
  5846.      &ISTEP), ZLI( ISTEP),0.,16HFIXED IMPEDANCE ,4)
  5847.       GOTO 2
  5848.    24 CALL PRNT( LDTAGS, LDTAGF( ISTEP), LDTAGT( ISTEP),0.,0.,0.,0.,0.,
  5849.      & ZLR( ISTEP),8H  WIRE  ,2)
  5850. C                                                                       
  5851.       GOTO 2
  5852.    25 FORMAT(//,7X,'LOCATION',10X,'RESISTANCE',3X,'INDUCTANCE',2X,
  5853.      &'CAPACITANCE',7X,'IMPEDANCE (OHMS)',5X,'CONDUCTIVITY',4X,'TYPE',/
  5854.      &,4X,'ITAG',' FROM THRU',10X,'OHMS',8X,'HENRYS',7X,'FARADS',8X,
  5855.      &'REAL',6X,'IMAGINARY',4X,'MHOS/METER')
  5856.    26 FORMAT(/,10X,'NOTE, SOME OF THE ABOVE SEGMENTS HAVE BEEN LOADED',
  5857.      &' TWICE - IMPEDANCES ADDED')
  5858.    27 FORMAT(/,10X,'IMPROPER LOAD TYPE CHOOSEN, REQUESTED TYPE IS ',I3)
  5859.      &
  5860.    28 FORMAT(/,10X,'LOADING DATA CARD ERROR, NO SEGMENT HAS AN ITAG =',
  5861.      &I5)
  5862.    29 FORMAT(' ERROR - LOADING MAY NOT BE ADDED TO SEGMENTS IN N.G.F.'
  5863.      &' SECTION')
  5864.       END
  5865. C ***
  5866. C     DOUBLE PRECISION 6/4/85
  5867. C
  5868.       SUBROUTINE LTSOLV( A, NROW, IX, B, NEQ, NRH, IFL1, IFL2)
  5869. C ***
  5870. C                                                                       
  5871. C     LTSOLV SOLVES THE MATRIX EQ. Y(R)*LU(T)=B(R) WHERE (R) DENOTES ROW
  5872. C     VECTOR AND LU(T) DENOTES THE LU DECOMPOSITION OF THE TRANSPOSE OF 
  5873. C     THE ORIGINAL COEFFICIENT MATRIX.  THE LU(T) DECOMPOSITION IS      
  5874. C     STORED ON TAPE 5 IN BLOCKS IN ASCENDING ORDER AND ON FILE 3 IN    
  5875. C     BLOCKS OF DESCENDING ORDER.                                       
  5876. C                                                                       
  5877.       IMPLICIT REAL (A-H,O-Z)
  5878.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  5879.       COMPLEX  A, B, Y, SUM
  5880.       COMMON  /MATPAR/ ICASE, NBLOKS, NPBLK, NLAST, NBLSYM, NPSYM, 
  5881.      &NLSYM, IMAT, ICASX, NBBX, NPBX, NLBX, NBBL, NPBL, NLBL
  5882.       COMMON  /SCRATM/ Y( N2M)
  5883. C                                                                       
  5884. C     FORWARD SUBSTITUTION                                              
  5885. C                                                                       
  5886.       DIMENSION  A( NROW, NROW), B( NEQ, NRH), IX( NEQ)
  5887.       I2=2* NPSYM* NROW
  5888.       DO 4  IXBLK1=1, NBLSYM
  5889.       CALL BLCKIN( A, IFL1,1, I2,1,121)
  5890.       K2= NPSYM
  5891.       IF( IXBLK1.EQ. NBLSYM) K2= NLSYM
  5892.       JST=( IXBLK1-1)* NPSYM
  5893.       DO 4  IC=1, NRH
  5894.       J= JST
  5895.       DO 3  K=1, K2
  5896.       JM1= J
  5897.       J= J+1
  5898.       SUM=(0.,0.)
  5899.       IF( JM1.LT.1) GOTO 2
  5900.       DO 1  I=1, JM1
  5901.     1 SUM= SUM+ A( I, K)* B( I, IC)
  5902.     2 B( J, IC)=( B( J, IC)- SUM)/ A( J, K)
  5903.     3 CONTINUE
  5904. C                                                                       
  5905. C     BACKWARD SUBSTITUTION                                             
  5906. C                                                                       
  5907.     4 CONTINUE
  5908.       JST= NROW+1
  5909.       DO 8  IXBLK1=1, NBLSYM
  5910.       CALL BLCKIN( A, IFL2,1, I2,1,122)
  5911.       K2= NPSYM
  5912.       IF( IXBLK1.EQ.1) K2= NLSYM
  5913.       DO 7  IC=1, NRH
  5914.       KP= K2+1
  5915.       J= JST
  5916.       DO 6  K=1, K2
  5917.       KP= KP-1
  5918.       JP1= J
  5919.       J= J-1
  5920.       SUM=(0.,0.)
  5921.       IF( NROW.LT. JP1) GOTO 6
  5922.       DO 5  I= JP1, NROW
  5923.     5 SUM= SUM+ A( I, KP)* B( I, IC)
  5924.       B( J, IC)= B( J, IC)- SUM
  5925.     6 CONTINUE
  5926.     7 CONTINUE
  5927. C                                                                       
  5928. C     UNSCRAMBLE SOLUTION                                               
  5929. C                                                                       
  5930.     8 JST= JST- K2
  5931.       DO 10  IC=1, NRH
  5932.       DO 9  I=1, NROW
  5933.       IXI= IX( I)
  5934.     9 Y( IXI)= B( I, IC)
  5935.       DO 10  I=1, NROW
  5936.    10 B( I, IC)= Y( I)
  5937.       RETURN
  5938.       END
  5939. C ***
  5940. C     DOUBLE PRECISION 6/4/85
  5941. C
  5942.       SUBROUTINE LUNSCR( A, NROW, NOP, IX, IP, IU2, IU3, IU4)
  5943. C ***
  5944. C                                                                       
  5945. C     S/R WHICH UNSCRAMBLES, SCRAMBLED FACTORED MATRIX                  
  5946. C                                                                       
  5947.       IMPLICIT REAL (A-H,O-Z)
  5948.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  5949.       COMPLEX  A, TEMP
  5950.       COMMON  /MATPAR/ ICASE, NBLOKS, NPBLK, NLAST, NBLSYM, NPSYM, 
  5951.      &NLSYM, IMAT, ICASX, NBBX, NPBX, NLBX, NBBL, NPBL, NLBL
  5952.       DIMENSION  A( NROW,1), IP( NROW), IX( NROW)
  5953.       I1=1
  5954.       I2=2* NPSYM* NROW
  5955.       NM1= NROW-1
  5956.       REWIND IU2
  5957.       REWIND IU3
  5958.       REWIND IU4
  5959.       DO 9  KK=1, NOP
  5960.       KA=( KK-1)* NROW
  5961.       DO 4  IXBLK1=1, NBLSYM
  5962.       CALL BLCKIN( A, IU2, I1, I2,1,121)
  5963.       K1=( IXBLK1-1)* NPSYM+2
  5964.       IF( NM1.LT. K1) GOTO 3
  5965.       J2=0
  5966.       DO 2  K= K1, NM1
  5967.       IF( J2.LT. NPSYM) J2= J2+1
  5968.       IPK= IP( K+ KA)
  5969.       DO 1  J=1, J2
  5970.       TEMP= A( K, J)
  5971.       A( K, J)= A( IPK, J)
  5972.       A( IPK, J)= TEMP
  5973.     1 CONTINUE
  5974.     2 CONTINUE
  5975.     3 CONTINUE
  5976.       CALL BLCKOT( A, IU3, I1, I2,1,122)
  5977.     4 CONTINUE
  5978.       DO 5  IXBLK1=1, NBLSYM
  5979.       BACKSPACE IU3
  5980.       IF( IXBLK1.NE.1) BACKSPACE IU3
  5981.       CALL BLCKIN( A, IU3, I1, I2,1,123)
  5982.       CALL BLCKOT( A, IU4, I1, I2,1,124)
  5983.     5 CONTINUE
  5984.       DO 6  I=1, NROW
  5985.       IX( I+ KA)= I
  5986.     6 CONTINUE
  5987.       DO 7  I=1, NROW
  5988.       IPI= IP( I+ KA)
  5989.       IXT= IX( I+ KA)
  5990.       IX( I+ KA)= IX( IPI+ KA)
  5991.       IX( IPI+ KA)= IXT
  5992.     7 CONTINUE
  5993.       IF( NOP.EQ.1) GOTO 9
  5994. C     SKIP NB1 LOGICAL RECORDS FORWARD                                  
  5995.       NB1= NBLSYM-1
  5996.       DO 8  IXBLK1=1, NB1
  5997.       CALL BLCKIN( A, IU3, I1, I2,1,125)
  5998.     8 CONTINUE
  5999.     9 CONTINUE
  6000.       REWIND IU2
  6001.       REWIND IU3
  6002.       REWIND IU4
  6003.       RETURN
  6004.       END
  6005. C ***
  6006. C     DOUBLE PRECISION 6/4/85
  6007. C
  6008.       SUBROUTINE MOVE( ROX, ROY, ROZ, XS, YS, ZS, ITS, NRPT, ITGI)
  6009. C ***
  6010. C                                                                       
  6011. C     SUBROUTINE MOVE MOVES THE STRUCTURE WITH RESPECT TO ITS           
  6012. C     COORDINATE SYSTEM OR REPRODUCES STRUCTURE IN NEW POSITIONS.       
  6013. C     STRUCTURE IS ROTATED ABOUT X,Y,Z AXES BY ROX,ROY,ROZ              
  6014. C     RESPECTIVELY, THEN SHIFTED BY XS,YS,ZS                            
  6015. C                                                                       
  6016.       IMPLICIT REAL (A-H,O-Z)
  6017.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  6018.       COMMON  /DATA/ LD, N1, N2, N, NP, M1, M2, M, MP, X( NM), Y( NM), 
  6019.      &Z( NM), SI( NM), BI( NM), ALP( NM), BET( NM), ICON1( N2M), ICON2(
  6020.      & N2M), ITAG( N2M), ICONX( NM), WLAM, IPSYM
  6021.       COMMON  /ANGL/ SALP( NM)
  6022.       DIMENSION  T1X(1), T1Y(1), T1Z(1), T2X(1), T2Y(1), T2Z(1), X2(1),
  6023.      & Y2(1), Z2(1)
  6024.       EQUIVALENCE(X2(1),SI(1)),(Y2(1),ALP(1)),(Z2(1),BET(1))
  6025.       EQUIVALENCE(T1X,SI),(T1Y,ALP),(T1Z,BET),(T2X,ICON1),(T2Y,ICON2),(
  6026.      &T2Z,ITAG)
  6027.       IF( ABS( ROX)+ ABS( ROY).GT.1.D-10) IPSYM= IPSYM*3
  6028.       SPS= SIN( ROX)
  6029.       CPS= COS( ROX)
  6030.       STH= SIN( ROY)
  6031.       CTH= COS( ROY)
  6032.       SPH= SIN( ROZ)
  6033.       CPH= COS( ROZ)
  6034.       XX= CPH* CTH
  6035.       XY= CPH* STH* SPS- SPH* CPS
  6036.       XZ= CPH* STH* CPS+ SPH* SPS
  6037.       YX= SPH* CTH
  6038.       YY= SPH* STH* SPS+ CPH* CPS
  6039.       YZ= SPH* STH* CPS- CPH* SPS
  6040.       ZX=- STH
  6041.       ZY= CTH* SPS
  6042.       ZZ= CTH* CPS
  6043.       NRP= NRPT
  6044.       IF( NRPT.EQ.0) NRP=1
  6045.       IX=1
  6046.       IF( N.LT. N2) GOTO 3
  6047.       I1= ISEGNO( ITS,1)
  6048.       IF( I1.LT. N2) I1= N2
  6049.       IX= I1
  6050.       K= N
  6051.       IF( NRPT.EQ.0) K= I1-1
  6052.       DO 2  IR=1, NRP
  6053.       DO 1  I= I1, N
  6054.       K= K+1
  6055.       XI= X( I)
  6056.       YI= Y( I)
  6057.       ZI= Z( I)
  6058.       X( K)= XI* XX+ YI* XY+ ZI* XZ+ XS
  6059.       Y( K)= XI* YX+ YI* YY+ ZI* YZ+ YS
  6060.       Z( K)= XI* ZX+ YI* ZY+ ZI* ZZ+ ZS
  6061.       XI= X2( I)
  6062.       YI= Y2( I)
  6063.       ZI= Z2( I)
  6064.       X2( K)= XI* XX+ YI* XY+ ZI* XZ+ XS
  6065.       Y2( K)= XI* YX+ YI* YY+ ZI* YZ+ YS
  6066.       Z2( K)= XI* ZX+ YI* ZY+ ZI* ZZ+ ZS
  6067.       BI( K)= BI( I)
  6068.       ITAG( K)= ITAG( I)
  6069.       IF( ITAG( I).NE.0) ITAG( K)= ITAG( I)+ ITGI
  6070.     1 CONTINUE
  6071.       I1= N+1
  6072.       N= K
  6073.     2 CONTINUE
  6074.     3 IF( M.LT. M2) GOTO 6
  6075.       I1= M2
  6076.       K= M
  6077.       LDI= LD+1
  6078.       IF( NRPT.EQ.0) K= M1
  6079.       DO 5  II=1, NRP
  6080.       DO 4  I= I1, M
  6081.       K= K+1
  6082.       IR= LDI- I
  6083.       KR= LDI- K
  6084.       XI= X( IR)
  6085.       YI= Y( IR)
  6086.       ZI= Z( IR)
  6087.       X( KR)= XI* XX+ YI* XY+ ZI* XZ+ XS
  6088.       Y( KR)= XI* YX+ YI* YY+ ZI* YZ+ YS
  6089.       Z( KR)= XI* ZX+ YI* ZY+ ZI* ZZ+ ZS
  6090.       XI= T1X( IR)
  6091.       YI= T1Y( IR)
  6092.       ZI= T1Z( IR)
  6093.       T1X( KR)= XI* XX+ YI* XY+ ZI* XZ
  6094.       T1Y( KR)= XI* YX+ YI* YY+ ZI* YZ
  6095.       T1Z( KR)= XI* ZX+ YI* ZY+ ZI* ZZ
  6096.       XI= T2X( IR)
  6097.       YI= T2Y( IR)
  6098.       ZI= T2Z( IR)
  6099.       T2X( KR)= XI* XX+ YI* XY+ ZI* XZ
  6100.       T2Y( KR)= XI* YX+ YI* YY+ ZI* YZ
  6101.       T2Z( KR)= XI* ZX+ YI* ZY+ ZI* ZZ
  6102.       SALP( KR)= SALP( IR)
  6103.     4 BI( KR)= BI( IR)
  6104.       I1= M+1
  6105.     5 M= K
  6106.     6 IF(( NRPT.EQ.0).AND.( IX.EQ.1)) RETURN
  6107.       NP= N
  6108.       MP= M
  6109.       IPSYM=0
  6110.       RETURN
  6111.       END
  6112. C ***
  6113. C     DOUBLE PRECISION 6/4/85
  6114. C
  6115.       SUBROUTINE NEFLD( XOB, YOB, ZOB, EX, EY, EZ)
  6116. C ***
  6117. C                                                                       
  6118. C     NEFLD COMPUTES THE NEAR FIELD AT SPECIFIED POINTS IN SPACE AFTER  
  6119. C     THE STRUCTURE CURRENTS HAVE BEEN COMPUTED.                        
  6120. C                                                                       
  6121.       IMPLICIT REAL (A-H,O-Z)
  6122.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  6123.       COMPLEX  EX, EY, EZ, CUR, ACX, BCX, CCX, EXK, EYK, EZK, EXS, 
  6124.      &EYS, EZS, EXC, EYC, EZC, ZRATI, ZRATI2, T1, FRATI
  6125.       COMMON  /DATA/ LD, N1, N2, N, NP, M1, M2, M, MP, X( NM), Y( NM), 
  6126.      &Z( NM), SI( NM), BI( NM), ALP( NM), BET( NM), ICON1( N2M), ICON2(
  6127.      & N2M), ITAG( N2M), ICONX( NM), WLAM, IPSYM
  6128.       COMMON  /ANGL/ SALP( NM)
  6129.       COMMON  /CRNT/ AIR( NM), AII( NM), BIR( NM), BII( NM), CIR( NM), 
  6130.      &CII( NM), CUR( N3M)
  6131.       COMMON  /DATAJ/ S, B, XJ, YJ, ZJ, CABJ, SABJ, SALPJ, EXK, EYK, 
  6132.      &EZK, EXS, EYS, EZS, EXC, EYC, EZC, RKH, IEXK, IND1, INDD1, IND2, 
  6133.      &INDD2, IPGND
  6134.       COMMON  /GND/ ZRATI, ZRATI2, FRATI, CL, CH, SCRWL, SCRWR, NRADL, 
  6135.      &KSYMP, IFAR, IPERF, T1, T2
  6136.       DIMENSION  CAB(1), SAB(1), T1X(1), T1Y(1), T1Z(1), T2X(1), T2Y(1)
  6137.      &, T2Z(1)
  6138.       EQUIVALENCE(CAB,ALP),(SAB,BET)
  6139.       EQUIVALENCE(T1X,SI),(T1Y,ALP),(T1Z,BET),(T2X,ICON1),(T2Y,ICON2),(
  6140.      &T2Z,ITAG)
  6141.       EQUIVALENCE(T1XJ,CABJ),(T1YJ,SABJ),(T1ZJ,SALPJ),(T2XJ,B),(T2YJ,
  6142.      &IND1),(T2ZJ,IND2)
  6143.       EX=(0.,0.)
  6144.       EY=(0.,0.)
  6145.       EZ=(0.,0.)
  6146.       AX=0.
  6147.       IF( N.EQ.0) GOTO 20
  6148.       DO 1  I=1, N
  6149.       XJ= XOB- X( I)
  6150.       YJ= YOB- Y( I)
  6151.       ZJ= ZOB- Z( I)
  6152.       ZP= CAB( I)* XJ+ SAB( I)* YJ+ SALP( I)* ZJ
  6153.       IF( ABS( ZP).GT.0.5001* SI( I)) GOTO 1
  6154.       ZP= XJ* XJ+ YJ* YJ+ ZJ* ZJ- ZP* ZP
  6155.       XJ= BI( I)
  6156.       IF( ZP.GT.0.9* XJ* XJ) GOTO 1
  6157.       AX= XJ
  6158.       GOTO 2
  6159.     1 CONTINUE
  6160.     2 DO 19  I=1, N
  6161.       S= SI( I)
  6162.       B= BI( I)
  6163.       XJ= X( I)
  6164.       YJ= Y( I)
  6165.       ZJ= Z( I)
  6166.       CABJ= CAB( I)
  6167.       SABJ= SAB( I)
  6168.       SALPJ= SALP( I)
  6169.       IF( IEXK.EQ.0) GOTO 18
  6170.       IPR= ICON1( I)
  6171.       IF( IPR) 3,8,4
  6172.     3 IPR=- IPR
  6173.       IF(- ICON1( IPR).NE. I) GOTO 9
  6174.       GOTO 6
  6175.     4 IF( IPR.NE. I) GOTO 5
  6176.       IF( CABJ* CABJ+ SABJ* SABJ.GT.1.D-8) GOTO 9
  6177.       GOTO 7
  6178.     5 IF( ICON2( IPR).NE. I) GOTO 9
  6179.     6 XI= ABS( CABJ* CAB( IPR)+ SABJ* SAB( IPR)+ SALPJ* SALP( IPR))
  6180.       IF( XI.LT.0.999999D+0) GOTO 9
  6181.       IF( ABS( BI( IPR)/ B-1.).GT.1.D-6) GOTO 9
  6182.     7 IND1=0
  6183.       GOTO 10
  6184.     8 IND1=1
  6185.       GOTO 10
  6186.     9 IND1=2
  6187.    10 IPR= ICON2( I)
  6188.       IF( IPR) 11,16,12
  6189.    11 IPR=- IPR
  6190.       IF(- ICON2( IPR).NE. I) GOTO 17
  6191.       GOTO 14
  6192.    12 IF( IPR.NE. I) GOTO 13
  6193.       IF( CABJ* CABJ+ SABJ* SABJ.GT.1.D-8) GOTO 17
  6194.       GOTO 15
  6195.    13 IF( ICON1( IPR).NE. I) GOTO 17
  6196.    14 XI= ABS( CABJ* CAB( IPR)+ SABJ* SAB( IPR)+ SALPJ* SALP( IPR))
  6197.       IF( XI.LT.0.999999D+0) GOTO 17
  6198.       IF( ABS( BI( IPR)/ B-1.).GT.1.D-6) GOTO 17
  6199.    15 IND2=0
  6200.       GOTO 18
  6201.    16 IND2=1
  6202.       GOTO 18
  6203.    17 IND2=2
  6204.    18 CONTINUE
  6205.       CALL EFLD( XOB, YOB, ZOB, AX,1)
  6206.       ACX= CMPLX( AIR( I), AII( I))
  6207.       BCX= CMPLX( BIR( I), BII( I))
  6208.       CCX= CMPLX( CIR( I), CII( I))
  6209.       EX= EX+ EXK* ACX+ EXS* BCX+ EXC* CCX
  6210.       EY= EY+ EYK* ACX+ EYS* BCX+ EYC* CCX
  6211.    19 EZ= EZ+ EZK* ACX+ EZS* BCX+ EZC* CCX
  6212.       IF( M.EQ.0) RETURN
  6213.    20 JC= N
  6214.       JL= LD+1
  6215.       DO 21  I=1, M
  6216.       JL= JL-1
  6217.       S= BI( JL)
  6218.       XJ= X( JL)
  6219.       YJ= Y( JL)
  6220.       ZJ= Z( JL)
  6221.       T1XJ= T1X( JL)
  6222.       T1YJ= T1Y( JL)
  6223.       T1ZJ= T1Z( JL)
  6224.       T2XJ= T2X( JL)
  6225.       T2YJ= T2Y( JL)
  6226.       T2ZJ= T2Z( JL)
  6227.       JC= JC+3
  6228.       ACX= T1XJ* CUR( JC-2)+ T1YJ* CUR( JC-1)+ T1ZJ* CUR( JC)
  6229.       BCX= T2XJ* CUR( JC-2)+ T2YJ* CUR( JC-1)+ T2ZJ* CUR( JC)
  6230.       DO 21  IP=1, KSYMP
  6231.       IPGND= IP
  6232.       CALL UNERE( XOB, YOB, ZOB)
  6233.       EX= EX+ ACX* EXK+ BCX* EXS
  6234.       EY= EY+ ACX* EYK+ BCX* EYS
  6235.    21 EZ= EZ+ ACX* EZK+ BCX* EZS
  6236.       RETURN
  6237.       END
  6238. C ***
  6239. C     DOUBLE PRECISION 6/4/85
  6240. C
  6241.       SUBROUTINE NETWK( CM, CMB, CMC, CMD, IP, EINC) 
  6242. C *** 
  6243. C                                                                       
  6244. C     SUBROUTINE NETWK SOLVES FOR STRUCTURE CURRENTS FOR A GIVEN        
  6245. C     EXCITATION INCLUDING THE EFFECT OF NON-RADIATING NETWORKS IF      
  6246. C     PRESENT.                                                          
  6247. C                                                                       
  6248.       IMPLICIT REAL (A-H,O-Z)
  6249.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  6250.       COMPLEX  CMN, RHNT, YMIT, RHS, ZPED, EINC, VSANT, VLT, CUR, 
  6251.      &VSRC, RHNX, VQD, VQDS, CUX, CM, CMB, CMC, CMD
  6252.       COMMON  /DATA/ LD, N1, N2, N, NP, M1, M2, M, MP, X( NM), Y( NM), 
  6253.      &Z( NM), SI( NM), BI( NM), ALP( NM), BET( NM), ICON1( N2M), ICON2(
  6254.      & N2M), ITAG( N2M), ICONX( NM), WLAM, IPSYM
  6255.       COMMON  /CRNT/ AIR( NM), AII( NM), BIR( NM), BII( NM), CIR( NM), 
  6256.      &CII( NM), CUR( N3M)
  6257.       COMMON  /VSORC/ VQD(30), VSANT(30), VQDS(30), IVQD(30), ISANT(30)
  6258.      &, IQDS(30), NVQD, NSANT, NQDS
  6259.       COMMON  /NETCX/ ZPED, PIN, PNLS, NEQ, NPEQ, NEQ2, NONET, NTSOL, 
  6260.      &NPRINT, MASYM, ISEG1(150), ISEG2(150), X11R(150), X11I(150), 
  6261.      &X12R(150), X12I(150), X22R(150), X22I(150), NTYP(150)
  6262.       DIMENSION  EINC(1), IP(1), CM(1), CMB(1), CMC(1), CMD(1)
  6263.       DIMENSION  CMN(150,150), RHNT(150), IPNT(150), NTEQA(150),  
  6264.      &NTSCA(150), RHS( N3M), VSRC(10), RHNX(150)
  6265.       DATA   NDIMN, NDIMNP/150,151/, TP/6.283185308D+0/
  6266.       NEQZ2= NEQ2
  6267.       IF( NEQZ2.EQ.0) NEQZ2=1
  6268.       PIN=0.
  6269.       PNLS=0.
  6270.       NEQT= NEQ+ NEQ2
  6271.       IF( NTSOL.NE.0) GOTO 42
  6272.       NOP= NEQ/ NPEQ
  6273. C                                                                       
  6274. C     COMPUTE RELATIVE MATRIX ASYMMETRY                                 
  6275. C                                                                       
  6276.       IF( MASYM.EQ.0) GOTO 14
  6277.       IROW1=0
  6278.       IF( NONET.EQ.0) GOTO 5
  6279.       DO 4  I=1, NONET
  6280.       NSEG1= ISEG1( I)
  6281.       DO 3  ISC1=1,2
  6282.       IF( IROW1.EQ.0) GOTO 2
  6283.       DO 1  J=1, IROW1
  6284.       IF( NSEG1.EQ. IPNT( J)) GOTO 3
  6285.     1 CONTINUE
  6286.     2 IROW1= IROW1+1
  6287.       IPNT( IROW1)= NSEG1
  6288.     3 NSEG1= ISEG2( I)
  6289.     4 CONTINUE
  6290.     5 IF( NSANT.EQ.0) GOTO 9
  6291.       DO 8  I=1, NSANT
  6292.       NSEG1= ISANT( I)
  6293.       IF( IROW1.EQ.0) GOTO 7
  6294.       DO 6  J=1, IROW1
  6295.       IF( NSEG1.EQ. IPNT( J)) GOTO 8
  6296.     6 CONTINUE
  6297.     7 IROW1= IROW1+1
  6298.       IPNT( IROW1)= NSEG1
  6299.     8 CONTINUE
  6300.     9 IF( IROW1.LT. NDIMNP) GOTO 10
  6301.       WRITE( 6,59) 
  6302.       STOP
  6303.    10 IF( IROW1.LT.2) GOTO 14
  6304.       DO 12  I=1, IROW1
  6305.       ISC1= IPNT( I)
  6306.       ASM= SI( ISC1)
  6307.       DO 11  J=1, NEQT
  6308.    11 RHS( J)=(0.,0.)
  6309.       RHS( ISC1)=(1.,0.)
  6310.       CALL SOLGF( CM, CMB, CMC, CMD, RHS, IP, NP, N1, N, MP, M1, M, NEQ
  6311.      &, NEQ2, NEQZ2)
  6312.       CALL CABC( RHS)
  6313.       DO 12  J=1, IROW1
  6314.       ISC1= IPNT( J)
  6315.    12 CMN( J, I)= RHS( ISC1)/ ASM
  6316.       ASM=0.
  6317.       ASA=0.
  6318.       DO 13  I=2, IROW1
  6319.       ISC1= I-1
  6320.       DO 13  J=1, ISC1
  6321.       CUX= CMN( I, J)
  6322.       PWR= ABS(( CUX- CMN( J, I))/ CUX)
  6323.       ASA= ASA+ PWR* PWR
  6324.       IF( PWR.LT. ASM) GOTO 13
  6325.       ASM= PWR
  6326.       NTEQ= IPNT( I)
  6327.       NTSC= IPNT( J)
  6328.    13 CONTINUE
  6329.       ASA= SQRT( ASA*2./ DFLOAT( IROW1*( IROW1-1)))
  6330.       WRITE( 6,58)  ASM, NTEQ, NTSC, ASA
  6331. C                                                                       
  6332. C     SOLUTION OF NETWORK EQUATIONS                                     
  6333. C                                                                       
  6334.    14 IF( NONET.EQ.0) GOTO 48
  6335.       DO 15  I=1, NDIMN
  6336.       RHNX( I)=(0.,0.)
  6337.       DO 15  J=1, NDIMN
  6338.    15 CMN( I, J)=(0.,0.)
  6339.       NTEQ=0
  6340. C                                                                       
  6341. C     SORT NETWORK AND SOURCE DATA AND ASSIGN EQUATION NUMBERS TO       
  6342. C     SEGMENTS.                                                         
  6343. C                                                                       
  6344.       NTSC=0
  6345.       DO 38  J=1, NONET
  6346.       NSEG1= ISEG1( J)
  6347.       NSEG2= ISEG2( J)
  6348.       IF( NTYP( J).GT.1) GOTO 16
  6349.       Y11R= X11R( J)
  6350.       Y11I= X11I( J)
  6351.       Y12R= X12R( J)
  6352.       Y12I= X12I( J)
  6353.       Y22R= X22R( J)
  6354.       Y22I= X22I( J)
  6355.       GOTO 17
  6356.    16 Y22R= TP* X11I( J)/ WLAM
  6357.       Y12R=0.
  6358.       Y12I=1./( X11R( J)* SIN( Y22R))
  6359.       Y11R= X12R( J)
  6360.       Y11I=- Y12I* COS( Y22R)
  6361.       Y22R= X22R( J)
  6362.       Y22I= Y11I+ X22I( J)
  6363.       Y11I= Y11I+ X12I( J)
  6364.       IF( NTYP( J).EQ.2) GOTO 17
  6365.       Y12R=- Y12R
  6366.       Y12I=- Y12I
  6367.    17 IF( NSANT.EQ.0) GOTO 19
  6368.       DO 18  I=1, NSANT
  6369.       IF( NSEG1.NE. ISANT( I)) GOTO 18
  6370.       ISC1= I
  6371.       GOTO 22
  6372.    18 CONTINUE
  6373.    19 ISC1=0
  6374.       IF( NTEQ.EQ.0) GOTO 21
  6375.       DO 20  I=1, NTEQ
  6376.       IF( NSEG1.NE. NTEQA( I)) GOTO 20
  6377.       IROW1= I
  6378.       GOTO 25
  6379.    20 CONTINUE
  6380.    21 NTEQ= NTEQ+1
  6381.       IROW1= NTEQ
  6382.       NTEQA( NTEQ)= NSEG1
  6383.       GOTO 25
  6384.    22 IF( NTSC.EQ.0) GOTO 24
  6385.       DO 23  I=1, NTSC
  6386.       IF( NSEG1.NE. NTSCA( I)) GOTO 23
  6387.       IROW1= NDIMNP- I
  6388.       GOTO 25
  6389.    23 CONTINUE
  6390.    24 NTSC= NTSC+1
  6391.       IROW1= NDIMNP- NTSC
  6392.       NTSCA( NTSC)= NSEG1
  6393.       VSRC( NTSC)= VSANT( ISC1)
  6394.    25 IF( NSANT.EQ.0) GOTO 27
  6395.       DO 26  I=1, NSANT
  6396.       IF( NSEG2.NE. ISANT( I)) GOTO 26
  6397.       ISC2= I
  6398.       GOTO 30
  6399.    26 CONTINUE
  6400.    27 ISC2=0
  6401.       IF( NTEQ.EQ.0) GOTO 29
  6402.       DO 28  I=1, NTEQ
  6403.       IF( NSEG2.NE. NTEQA( I)) GOTO 28
  6404.       IROW2= I
  6405.       GOTO 33
  6406.    28 CONTINUE
  6407.    29 NTEQ= NTEQ+1
  6408.       IROW2= NTEQ
  6409.       NTEQA( NTEQ)= NSEG2
  6410.       GOTO 33
  6411.    30 IF( NTSC.EQ.0) GOTO 32
  6412.       DO 31  I=1, NTSC
  6413.       IF( NSEG2.NE. NTSCA( I)) GOTO 31
  6414.       IROW2= NDIMNP- I
  6415.       GOTO 33
  6416.    31 CONTINUE
  6417.    32 NTSC= NTSC+1
  6418.       IROW2= NDIMNP- NTSC
  6419.       NTSCA( NTSC)= NSEG2
  6420.       VSRC( NTSC)= VSANT( ISC2)
  6421.    33 IF( NTSC+ NTEQ.LT. NDIMNP) GOTO 34
  6422.       WRITE( 6,59) 
  6423. C                                                                       
  6424. C     FILL NETWORK EQUATION MATRIX AND RIGHT HAND SIDE VECTOR WITH      
  6425. C     NETWORK SHORT-CIRCUIT ADMITTANCE MATRIX COEFFICIENTS.             
  6426. C                                                                       
  6427.       STOP
  6428.    34 IF( ISC1.NE.0) GOTO 35
  6429.       CMN( IROW1, IROW1)= CMN( IROW1, IROW1)- CMPLX( Y11R, Y11I)* SI( 
  6430.      &NSEG1)
  6431.       CMN( IROW1, IROW2)= CMN( IROW1, IROW2)- CMPLX( Y12R, Y12I)* SI( 
  6432.      &NSEG1)
  6433.       GOTO 36
  6434.    35 RHNX( IROW1)= RHNX( IROW1)+ CMPLX( Y11R, Y11I)* VSANT( ISC1)/ 
  6435.      &WLAM
  6436.       RHNX( IROW2)= RHNX( IROW2)+ CMPLX( Y12R, Y12I)* VSANT( ISC1)/ 
  6437.      &WLAM
  6438.    36 IF( ISC2.NE.0) GOTO 37
  6439.       CMN( IROW2, IROW2)= CMN( IROW2, IROW2)- CMPLX( Y22R, Y22I)* SI( 
  6440.      &NSEG2)
  6441.       CMN( IROW2, IROW1)= CMN( IROW2, IROW1)- CMPLX( Y12R, Y12I)* SI( 
  6442.      &NSEG2)
  6443.       GOTO 38
  6444.    37 RHNX( IROW1)= RHNX( IROW1)+ CMPLX( Y12R, Y12I)* VSANT( ISC2)/ 
  6445.      &WLAM
  6446.       RHNX( IROW2)= RHNX( IROW2)+ CMPLX( Y22R, Y22I)* VSANT( ISC2)/ 
  6447.      &WLAM
  6448. C                                                                       
  6449. C     ADD INTERACTION MATRIX ADMITTANCE ELEMENTS TO NETWORK EQUATION    
  6450. C     MATRIX                                                            
  6451. C                                                                       
  6452.    38 CONTINUE
  6453.       DO 41  I=1, NTEQ
  6454.       DO 39  J=1, NEQT
  6455.    39 RHS( J)=(0.,0.)
  6456.       IROW1= NTEQA( I)
  6457.       RHS( IROW1)=(1.,0.)
  6458.       CALL SOLGF( CM, CMB, CMC, CMD, RHS, IP, NP, N1, N, MP, M1, M, NEQ
  6459.      &, NEQ2, NEQZ2)
  6460.       CALL CABC( RHS)
  6461.       DO 40  J=1, NTEQ
  6462.       IROW1= NTEQA( J)
  6463.    40 CMN( I, J)= CMN( I, J)+ RHS( IROW1)
  6464. C                                                                       
  6465. C     FACTOR NETWORK EQUATION MATRIX                                    
  6466. C                                                                       
  6467.    41 CONTINUE
  6468. C                                                                       
  6469. C     ADD TO NETWORK EQUATION RIGHT HAND SIDE THE TERMS DUE TO ELEMENT  
  6470. C     INTERACTIONS                                                      
  6471. C                                                                       
  6472.       CALL FACTR( NTEQ, CMN, IPNT, NDIMN)
  6473.    42 IF( NONET.EQ.0) GOTO 48
  6474.       DO 43  I=1, NEQT
  6475.    43 RHS( I)= EINC( I)
  6476.       CALL SOLGF( CM, CMB, CMC, CMD, RHS, IP, NP, N1, N, MP, M1, M, NEQ
  6477.      &, NEQ2, NEQZ2)
  6478.       CALL CABC( RHS)
  6479.       DO 44  I=1, NTEQ
  6480.       IROW1= NTEQA( I)
  6481. C                                                                       
  6482. C     SOLVE NETWORK EQUATIONS                                           
  6483. C                                                                       
  6484.    44 RHNT( I)= RHNX( I)+ RHS( IROW1)
  6485. C                                                                       
  6486. C     ADD FIELDS DUE TO NETWORK VOLTAGES TO ELECTRIC FIELDS APPLIED TO  
  6487. C     STRUCTURE AND SOLVE FOR INDUCED CURRENT                           
  6488. C                                                                       
  6489.       CALL SOLVE( NTEQ, CMN, IPNT, RHNT, NDIMN)
  6490.       DO 45  I=1, NTEQ
  6491.       IROW1= NTEQA( I)
  6492.    45 EINC( IROW1)= EINC( IROW1)- RHNT( I)
  6493.       CALL SOLGF( CM, CMB, CMC, CMD, EINC, IP, NP, N1, N, MP, M1, M, 
  6494.      &NEQ, NEQ2, NEQZ2)
  6495.       CALL CABC( EINC)
  6496.       IF( NPRINT.EQ.0) WRITE( 6,61) 
  6497.       IF( NPRINT.EQ.0) WRITE( 6,60) 
  6498.       DO 46  I=1, NTEQ
  6499.       IROW1= NTEQA( I)
  6500.       VLT= RHNT( I)* SI( IROW1)* WLAM
  6501.       CUX= EINC( IROW1)* WLAM
  6502.       YMIT= CUX/ VLT
  6503.       ZPED= VLT/ CUX
  6504.       IROW2= ITAG( IROW1)
  6505.       PWR=.5* REAL( VLT* CONJG( CUX))
  6506.       PNLS= PNLS- PWR
  6507.    46 IF( NPRINT.EQ.0) WRITE( 6,62)  IROW2, IROW1, VLT, CUX, ZPED, YMIT
  6508.      &, PWR
  6509.       IF( NTSC.EQ.0) GOTO 49
  6510.       DO 47  I=1, NTSC
  6511.       IROW1= NTSCA( I)
  6512.       VLT= VSRC( I)
  6513.       CUX= EINC( IROW1)* WLAM
  6514.       YMIT= CUX/ VLT
  6515.       ZPED= VLT/ CUX
  6516.       IROW2= ITAG( IROW1)
  6517.       PWR=.5* REAL( VLT* CONJG( CUX))
  6518.       PNLS= PNLS- PWR
  6519.    47 IF( NPRINT.EQ.0) WRITE( 6,62)  IROW2, IROW1, VLT, CUX, ZPED, YMIT
  6520.      &, PWR
  6521. C                                                                       
  6522. C     SOLVE FOR CURRENTS WHEN NO NETWORKS ARE PRESENT                   
  6523. C                                                                       
  6524.       GOTO 49
  6525.    48 CALL SOLGF( CM, CMB, CMC, CMD, EINC, IP, NP, N1, N, MP, M1, M, 
  6526.      &NEQ, NEQ2, NEQZ2)
  6527.       CALL CABC( EINC)
  6528.       NTSC=0
  6529.    49 IF( NSANT+ NVQD.EQ.0) RETURN
  6530.       WRITE( 6,63) 
  6531.       WRITE( 6,60) 
  6532.       IF( NSANT.EQ.0) GOTO 56
  6533.       DO 55  I=1, NSANT
  6534.       ISC1= ISANT( I)
  6535.       VLT= VSANT( I)
  6536.       IF( NTSC.EQ.0) GOTO 51
  6537.       DO 50  J=1, NTSC
  6538.       IF( NTSCA( J).EQ. ISC1) GOTO 52
  6539.    50 CONTINUE
  6540.    51 CUX= EINC( ISC1)* WLAM
  6541.       IROW1=0
  6542.       GOTO 54
  6543.    52 IROW1= NDIMNP- J
  6544.       CUX= RHNX( IROW1)
  6545.       DO 53  J=1, NTEQ
  6546.    53 CUX= CUX- CMN( J, IROW1)* RHNT( J)
  6547.       CUX=( EINC( ISC1)+ CUX)* WLAM
  6548.    54 YMIT= CUX/ VLT
  6549.       ZPED= VLT/ CUX
  6550.       PWR=.5* REAL( VLT* CONJG( CUX))
  6551.       PIN= PIN+ PWR
  6552.       IF( IROW1.NE.0) PNLS= PNLS+ PWR
  6553.       IROW2= ITAG( ISC1)
  6554.    55 WRITE( 6,62)  IROW2, ISC1, VLT, CUX, ZPED, YMIT, PWR
  6555.    56 IF( NVQD.EQ.0) RETURN
  6556.       DO 57  I=1, NVQD
  6557.       ISC1= IVQD( I)
  6558.       VLT= VQD( I)
  6559.       CUX= CMPLX( AIR( ISC1), AII( ISC1))
  6560.       YMIT= CMPLX( BIR( ISC1), BII( ISC1))
  6561.       ZPED= CMPLX( CIR( ISC1), CII( ISC1))
  6562.       PWR= SI( ISC1)* TP*.5
  6563.       CUX=( CUX- YMIT* SIN( PWR)+ ZPED* COS( PWR))* WLAM
  6564.       YMIT= CUX/ VLT
  6565.       ZPED= VLT/ CUX
  6566.       PWR=.5* REAL( VLT* CONJG( CUX))
  6567.       PIN= PIN+ PWR
  6568.       IROW2= ITAG( ISC1)
  6569.    57 WRITE( 6,64)  IROW2, ISC1, VLT, CUX, ZPED, YMIT, PWR
  6570. C                                                                       
  6571.       RETURN
  6572.    58 FORMAT(///,3X,'MAXIMUM RELATIVE ASYMMETRY OF THE DRIVING POINT',
  6573.      &' ADMITTANCE MATRIX IS',1P,E10.3,' FOR SEGMENTS',I5,4H AND,I5,/,3
  6574.      &X,'RMS RELATIVE ASYMMETRY IS',E10.3)
  6575.    59 FORMAT(1X,'ERROR - - NETWORK ARRAY DIMENSIONS TOO SMALL')
  6576.    60 FORMAT(/,3X,'TAG',3X,'SEG.',4X,'VOLTAGE (VOLTS)',9X,'CURRENT (',
  6577.      &'AMPS)',9X,'IMPEDANCE (OHMS)',8X,'ADMITTANCE (MHOS)',6X,'POWER',/
  6578.      &,3X,'NO.',3X,'NO.',4X,'REAL',8X,'IMAG.',3(7X,'REAL',8X,'IMAG.'),5
  6579.      &X,'(WATTS)')
  6580.    61 FORMAT(///,27X,'- - - STRUCTURE EXCITATION DATA AT NETWORK CONN',
  6581.      &'ECTION POINTS - - -')
  6582.    62 FORMAT(2(1X,I5),1P,9E12.5)
  6583.    63 FORMAT(///,42X,'- - - ANTENNA INPUT PARAMETERS - - -')
  6584.    64 FORMAT(1X,I5,' *',I4,1P,9E12.5)
  6585.       END
  6586. C ***
  6587. C     DOUBLE PRECISION 6/4/85
  6588. C
  6589.       SUBROUTINE NFPAT
  6590. C ***
  6591. C     COMPUTE NEAR E OR H FIELDS OVER A RANGE OF POINTS                 
  6592.       IMPLICIT REAL (A-H,O-Z)
  6593.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  6594.       COMPLEX  EX, EY, EZ
  6595.       COMMON  /DATA/ LD, N1, N2, N, NP, M1, M2, M, MP, X( NM), Y( NM), 
  6596.      &Z( NM), SI( NM), BI( NM), ALP( NM), BET( NM), ICON1( N2M), ICON2(
  6597.      & N2M), ITAG( N2M), ICONX( NM), WLAM, IPSYM
  6598. C***
  6599.       COMMON  /FPAT/ NTH, NPH, IPD, IAVP, INOR, IAX, THETS, PHIS, DTH, 
  6600.      &DPH, RFLD, GNOR, CLT, CHT, EPSR2, SIG2, IXTYP, XPR6, PINR, PNLR, 
  6601.      &PLOSS, NEAR, NFEH, NRX, NRY, NRZ, XNR, YNR, ZNR, DXNR, DYNR, DZNR
  6602.      &
  6603. C***
  6604.       COMMON  /PLOT/ IPLP1, IPLP2, IPLP3, IPLP4
  6605.       DATA   TA/1.745329252D-02/
  6606.       IF( NFEH.EQ.1) GOTO 1
  6607.       WRITE( 6,10) 
  6608.       GOTO 2
  6609.     1 WRITE( 6,12) 
  6610.     2 ZNRT= ZNR- DZNR
  6611.       DO 9  I=1, NRZ
  6612.       ZNRT= ZNRT+ DZNR
  6613.       IF( NEAR.EQ.0) GOTO 3
  6614.       CTH= COS( TA* ZNRT)
  6615.       STH= SIN( TA* ZNRT)
  6616.     3 YNRT= YNR- DYNR
  6617.       DO 9  J=1, NRY
  6618.       YNRT= YNRT+ DYNR
  6619.       IF( NEAR.EQ.0) GOTO 4
  6620.       CPH= COS( TA* YNRT)
  6621.       SPH= SIN( TA* YNRT)
  6622.     4 XNRT= XNR- DXNR
  6623.       DO 9  KK=1, NRX
  6624.       XNRT= XNRT+ DXNR
  6625.       IF( NEAR.EQ.0) GOTO 5
  6626.       XOB= XNRT* STH* CPH
  6627.       YOB= XNRT* STH* SPH
  6628.       ZOB= XNRT* CTH
  6629.       GOTO 6
  6630.     5 XOB= XNRT
  6631.       YOB= YNRT
  6632.       ZOB= ZNRT
  6633.     6 TMP1= XOB/ WLAM
  6634.       TMP2= YOB/ WLAM
  6635.       TMP3= ZOB/ WLAM
  6636.       IF( NFEH.EQ.1) GOTO 7
  6637.       CALL NEFLD( TMP1, TMP2, TMP3, EX, EY, EZ)
  6638.       GOTO 8
  6639.     7 CALL NHFLD( TMP1, TMP2, TMP3, EX, EY, EZ)
  6640.     8 TMP1= ABS( EX)
  6641.       TMP2= CANG( EX)
  6642.       TMP3= ABS( EY)
  6643.       TMP4= CANG( EY)
  6644.       TMP5= ABS( EZ)
  6645.       TMP6= CANG( EZ)
  6646. C***
  6647.       WRITE( 6,11)  XOB, YOB, ZOB, TMP1, TMP2, TMP3, TMP4, TMP5, TMP6
  6648.       IF( IPLP1.NE.2) GOTO 9
  6649.       GOTO (14,15,16), IPLP4
  6650.    14 XXX= XOB
  6651.       GOTO 17
  6652.    15 XXX= YOB
  6653.       GOTO 17
  6654.    16 XXX= ZOB
  6655.    17 CONTINUE
  6656.       IF( IPLP2.NE.2) GOTO 13
  6657.       IF( IPLP3.EQ.1) WRITE( 8,*)  XXX, TMP1, TMP2
  6658.       IF( IPLP3.EQ.2) WRITE( 8,*)  XXX, TMP3, TMP4
  6659.       IF( IPLP3.EQ.3) WRITE( 8,*)  XXX, TMP5, TMP6
  6660.       IF( IPLP3.EQ.4) WRITE( 8,*)  XXX, TMP1, TMP2, TMP3, TMP4, TMP5, 
  6661.      &TMP6
  6662.       GOTO 9
  6663.    13 IF( IPLP2.NE.1) GOTO 9
  6664.       IF( IPLP3.EQ.1) WRITE( 8,*)  XXX, EX
  6665.       IF( IPLP3.EQ.2) WRITE( 8,*)  XXX, EY
  6666.       IF( IPLP3.EQ.3) WRITE( 8,*)  XXX, EZ
  6667. C***
  6668.       IF( IPLP3.EQ.4) WRITE( 8,*)  XXX, EX, EY, EZ
  6669.     9 CONTINUE
  6670. C                                                                       
  6671.       RETURN
  6672.    10 FORMAT(///,35X,'- - - NEAR ELECTRIC FIELDS - - -',//,12X,'-  L',
  6673.      &'OCATION  -',21X,'-  EX  -',15X,'-  EY  -',15X,'-  EZ  -',/,8X,
  6674.      &'X',10X,'Y',10X,'Z',10X,'MAGNITUDE',3X,'PHASE',6X,'MAGNITUDE',3X,
  6675.      &'PHASE',6X,'MAGNITUDE',3X,'PHASE',/,6X,'METERS',5X,'METERS',5X,
  6676.      &'METERS',8X,'VOLTS/M',3X,'DEGREES',6X,'VOLTS/M',3X,'DEGREES',6X
  6677.      &,'VOLTS/M',3X,'DEGREES')
  6678.    11 FORMAT(2X,3(2X,F9.4),1X,3(3X,1P,E11.4,2X,0P,F7.2))
  6679.    12 FORMAT(///,35X,'- - - NEAR MAGNETIC FIELDS - - -',//,12X,'-  L',
  6680.      &'OCATION  -',21X,'-  HX  -',15X,'-  HY  -',15X,'-  HZ  -',/,8X,
  6681.      &'X',10X,'Y',10X,'Z',10X,'MAGNITUDE',3X,'PHASE',6X,'MAGNITUDE',3X,
  6682.      &'PHASE',6X,'MAGNITUDE',3X,'PHASE',/,6X,'METERS',5X,'METERS',5X,
  6683.      &'METERS',9X,'AMPS/M',3X,'DEGREES',7X,'AMPS/M',3X,'DEGREES',7X,
  6684.      &'AMPS/M',3X,'DEGREES')
  6685.       END
  6686. C ***
  6687. C     DOUBLE PRECISION 6/4/85
  6688. C
  6689.       SUBROUTINE NHFLD( XOB, YOB, ZOB, HX, HY, HZ)
  6690. C ***
  6691. C                                                                       
  6692. C     NHFLD COMPUTES THE NEAR FIELD AT SPECIFIED POINTS IN SPACE AFTER  
  6693. C     THE STRUCTURE CURRENTS HAVE BEEN COMPUTED.                        
  6694. C                                                                       
  6695.       IMPLICIT REAL (A-H,O-Z)
  6696.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  6697.       COMPLEXHX,HY,HZ,CUR,ACX,  BCX, CCX, EXK, EYK, EZK, EXS, EYS, 
  6698.      &EZS, EXC, EYC, EZC
  6699.       COMMON  /DATA/ LD, N1, N2, N, NP, M1, M2, M, MP, X( NM), Y( NM), 
  6700.      &Z( NM), SI( NM), BI( NM), ALP( NM), BET( NM), ICON1( N2M), ICON2(
  6701.      & N2M), ITAG( N2M), ICONX( NM), WLAM, IPSYM
  6702.       COMMON  /ANGL/ SALP( NM)
  6703.       COMMON  /CRNT/ AIR( NM), AII( NM), BIR( NM), BII( NM), CIR( NM), 
  6704.      &CII( NM), CUR( N3M)
  6705.       COMMON  /DATAJ/ S, B, XJ, YJ, ZJ, CABJ, SABJ, SALPJ, EXK, EYK, 
  6706.      &EZK, EXS, EYS, EZS, EXC, EYC, EZC, RKH, IEXK, IND1, INDD1, IND2, 
  6707.      &INDD2, IPGND
  6708.       DIMENSION  CAB(1), SAB(1)
  6709.       DIMENSION  T1X(1), T1Y(1), T1Z(1), T2X(1), T2Y(1), T2Z(1), XS(1),
  6710.      & YS(1), ZS(1)
  6711.       EQUIVALENCE(T1X,SI),(T1Y,ALP),(T1Z,BET),(T2X,ICON1),(T2Y,ICON2),(
  6712.      &T2Z,ITAG),(XS,X),(YS,Y),(ZS,Z)
  6713.       EQUIVALENCE(T1XJ,CABJ),(T1YJ,SABJ),(T1ZJ,SALPJ),(T2XJ,B),(T2YJ,
  6714.      &IND1),(T2ZJ,IND2)
  6715.       EQUIVALENCE(CAB,ALP),(SAB,BET)
  6716.       HX=(0.,0.)
  6717.       HY=(0.,0.)
  6718.       HZ=(0.,0.)
  6719.       AX=0.
  6720.       IF( N.EQ.0) GOTO 4
  6721.       DO 1  I=1, N
  6722.       XJ= XOB- X( I)
  6723.       YJ= YOB- Y( I)
  6724.       ZJ= ZOB- Z( I)
  6725.       ZP= CAB( I)* XJ+ SAB( I)* YJ+ SALP( I)* ZJ
  6726.       IF( ABS( ZP).GT.0.5001* SI( I)) GOTO 1
  6727.       ZP= XJ* XJ+ YJ* YJ+ ZJ* ZJ- ZP* ZP
  6728.       XJ= BI( I)
  6729.       IF( ZP.GT.0.9* XJ* XJ) GOTO 1
  6730.       AX= XJ
  6731.       GOTO 2
  6732.     1 CONTINUE
  6733.     2 DO 3  I=1, N
  6734.       S= SI( I)
  6735.       B= BI( I)
  6736.       XJ= X( I)
  6737.       YJ= Y( I)
  6738.       ZJ= Z( I)
  6739.       CABJ= CAB( I)
  6740.       SABJ= SAB( I)
  6741.       SALPJ= SALP( I)
  6742.       CALL HSFLD( XOB, YOB, ZOB, AX)
  6743.       ACX= CMPLX( AIR( I), AII( I))
  6744.       BCX= CMPLX( BIR( I), BII( I))
  6745.       CCX= CMPLX( CIR( I), CII( I))
  6746.       HX= HX+ EXK* ACX+ EXS* BCX+ EXC* CCX
  6747.       HY= HY+ EYK* ACX+ EYS* BCX+ EYC* CCX
  6748.     3 HZ= HZ+ EZK* ACX+ EZS* BCX+ EZC* CCX
  6749.       IF( M.EQ.0) RETURN
  6750.     4 JC= N
  6751.       JL= LD+1
  6752.       DO 5  I=1, M
  6753.       JL= JL-1
  6754.       S= BI( JL)
  6755.       XJ= X( JL)
  6756.       YJ= Y( JL)
  6757.       ZJ= Z( JL)
  6758.       T1XJ= T1X( JL)
  6759.       T1YJ= T1Y( JL)
  6760.       T1ZJ= T1Z( JL)
  6761.       T2XJ= T2X( JL)
  6762.       T2YJ= T2Y( JL)
  6763.       T2ZJ= T2Z( JL)
  6764.       CALL HINTG( XOB, YOB, ZOB)
  6765.       JC= JC+3
  6766.       ACX= T1XJ* CUR( JC-2)+ T1YJ* CUR( JC-1)+ T1ZJ* CUR( JC)
  6767.       BCX= T2XJ* CUR( JC-2)+ T2YJ* CUR( JC-1)+ T2ZJ* CUR( JC)
  6768.       HX= HX+ ACX* EXK+ BCX* EXS
  6769.       HY= HY+ ACX* EYK+ BCX* EYS
  6770.     5 HZ= HZ+ ACX* EZK+ BCX* EZS
  6771.       RETURN
  6772.       END
  6773. C ***
  6774. C     DOUBLE PRECISION 6/4/85
  6775. C
  6776.       SUBROUTINE PATCH( NX, NY, X1, Y1, Z1, X2, Y2, Z2, X3, Y3, Z3, X4,
  6777.      & Y4, Z4)
  6778. C ***
  6779. C     PATCH GENERATES AND MODIFIES PATCH GEOMETRY DATA                  
  6780.       IMPLICIT REAL (A-H,O-Z)
  6781.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  6782.       COMMON  /DATA/ LD, N1, N2, N, NP, M1, M2, M, MP, X( NM), Y( NM), 
  6783.      &Z( NM), SI( NM), BI( NM), ALP( NM), BET( NM), ICON1( N2M), ICON2(
  6784.      & N2M), ITAG( N2M), ICONX( NM), WLAM, IPSYM
  6785.       COMMON  /ANGL/ SALP( NM)
  6786.       DIMENSION  T1X(1), T1Y(1), T1Z(1), T2X(1), T2Y(1), T2Z(1)
  6787. C     NEW PATCHES.  FOR NX=0, NY=1,2,3,4 PATCH IS (RESPECTIVELY)        
  6788. C     ARBITRARY, RECTAGULAR, TRIANGULAR, OR QUADRILATERAL.              
  6789. C     FOR NX AND NY .GT. 0 A RECTANGULAR SURFACE IS PRODUCED WITH       
  6790. C     NX BY NY RECTANGULAR PATCHES.                                     
  6791.       EQUIVALENCE(T1X,SI),(T1Y,ALP),(T1Z,BET),(T2X,ICON1),(T2Y,ICON2),(
  6792.      &T2Z,ITAG)
  6793.       M= M+1
  6794.       MI= LD+1- M
  6795.       NTP= NY
  6796.       IF( NX.GT.0) NTP=2
  6797.       IF( NTP.GT.1) GOTO 2
  6798.       X( MI)= X1
  6799.       Y( MI)= Y1
  6800.       Z( MI)= Z1
  6801.       BI( MI)= Z2
  6802.       ZNV= COS( X2)
  6803.       XNV= ZNV* COS( Y2)
  6804.       YNV= ZNV* SIN( Y2)
  6805.       ZNV= SIN( X2)
  6806.       XA= SQRT( XNV* XNV+ YNV* YNV)
  6807.       IF( XA.LT.1.D-6) GOTO 1
  6808.       T1X( MI)=- YNV/ XA
  6809.       T1Y( MI)= XNV/ XA
  6810.       T1Z( MI)=0.
  6811.       GOTO 6
  6812.     1 T1X( MI)=1.
  6813.       T1Y( MI)=0.
  6814.       T1Z( MI)=0.
  6815.       GOTO 6
  6816.     2 S1X= X2- X1
  6817.       S1Y= Y2- Y1
  6818.       S1Z= Z2- Z1
  6819.       S2X= X3- X2
  6820.       S2Y= Y3- Y2
  6821.       S2Z= Z3- Z2
  6822.       IF( NX.EQ.0) GOTO 3
  6823.       S1X= S1X/ NX
  6824.       S1Y= S1Y/ NX
  6825.       S1Z= S1Z/ NX
  6826.       S2X= S2X/ NY
  6827.       S2Y= S2Y/ NY
  6828.       S2Z= S2Z/ NY
  6829.     3 XNV= S1Y* S2Z- S1Z* S2Y
  6830.       YNV= S1Z* S2X- S1X* S2Z
  6831.       ZNV= S1X* S2Y- S1Y* S2X
  6832.       XA= SQRT( XNV* XNV+ YNV* YNV+ ZNV* ZNV)
  6833.       XNV= XNV/ XA
  6834.       YNV= YNV/ XA
  6835.       ZNV= ZNV/ XA
  6836.       XST= SQRT( S1X* S1X+ S1Y* S1Y+ S1Z* S1Z)
  6837.       T1X( MI)= S1X/ XST
  6838.       T1Y( MI)= S1Y/ XST
  6839.       T1Z( MI)= S1Z/ XST
  6840.       IF( NTP.GT.2) GOTO 4
  6841.       X( MI)= X1+.5*( S1X+ S2X)
  6842.       Y( MI)= Y1+.5*( S1Y+ S2Y)
  6843.       Z( MI)= Z1+.5*( S1Z+ S2Z)
  6844.       BI( MI)= XA
  6845.       GOTO 6
  6846.     4 IF( NTP.EQ.4) GOTO 5
  6847.       X( MI)=( X1+ X2+ X3)/3.
  6848.       Y( MI)=( Y1+ Y2+ Y3)/3.
  6849.       Z( MI)=( Z1+ Z2+ Z3)/3.
  6850.       BI( MI)=.5* XA
  6851.       GOTO 6
  6852.     5 S1X= X3- X1
  6853.       S1Y= Y3- Y1
  6854.       S1Z= Z3- Z1
  6855.       S2X= X4- X1
  6856.       S2Y= Y4- Y1
  6857.       S2Z= Z4- Z1
  6858.       XN2= S1Y* S2Z- S1Z* S2Y
  6859.       YN2= S1Z* S2X- S1X* S2Z
  6860.       ZN2= S1X* S2Y- S1Y* S2X
  6861.       XST= SQRT( XN2* XN2+ YN2* YN2+ ZN2* ZN2)
  6862.       SALPN=1./(3.*( XA+ XST))
  6863.       X( MI)=( XA*( X1+ X2+ X3)+ XST*( X1+ X3+ X4))* SALPN
  6864.       Y( MI)=( XA*( Y1+ Y2+ Y3)+ XST*( Y1+ Y3+ Y4))* SALPN
  6865.       Z( MI)=( XA*( Z1+ Z2+ Z3)+ XST*( Z1+ Z3+ Z4))* SALPN
  6866.       BI( MI)=.5*( XA+ XST)
  6867.       S1X=( XNV* XN2+ YNV* YN2+ ZNV* ZN2)/ XST
  6868.       IF( S1X.GT.0.9998) GOTO 6
  6869.       WRITE( 6,14) 
  6870.       STOP
  6871.     6 T2X( MI)= YNV* T1Z( MI)- ZNV* T1Y( MI)
  6872.       T2Y( MI)= ZNV* T1X( MI)- XNV* T1Z( MI)
  6873.       T2Z( MI)= XNV* T1Y( MI)- YNV* T1X( MI)
  6874.       SALP( MI)=1.
  6875.       IF( NX.EQ.0) GOTO 8
  6876.       M= M+ NX* NY-1
  6877.       XN2= X( MI)- S1X- S2X
  6878.       YN2= Y( MI)- S1Y- S2Y
  6879.       ZN2= Z( MI)- S1Z- S2Z
  6880.       XS= T1X( MI)
  6881.       YS= T1Y( MI)
  6882.       ZS= T1Z( MI)
  6883.       XT= T2X( MI)
  6884.       YT= T2Y( MI)
  6885.       ZT= T2Z( MI)
  6886.       MI= MI+1
  6887.       DO 7  IY=1, NY
  6888.       XN2= XN2+ S2X
  6889.       YN2= YN2+ S2Y
  6890.       ZN2= ZN2+ S2Z
  6891.       DO 7  IX=1, NX
  6892.       XST= IX
  6893.       MI= MI-1
  6894.       X( MI)= XN2+ XST* S1X
  6895.       Y( MI)= YN2+ XST* S1Y
  6896.       Z( MI)= ZN2+ XST* S1Z
  6897.       BI( MI)= XA
  6898.       SALP( MI)=1.
  6899.       T1X( MI)= XS
  6900.       T1Y( MI)= YS
  6901.       T1Z( MI)= ZS
  6902.       T2X( MI)= XT
  6903.       T2Y( MI)= YT
  6904.     7 T2Z( MI)= ZT
  6905.     8 IPSYM=0
  6906.       NP= N
  6907.       MP= M
  6908. C     DIVIDE PATCH FOR WIRE CONNECTION                                  
  6909.       RETURN
  6910.       ENTRY SUBPH( NX, NY, X1, Y1, Z1, X2, Y2, Z2, X3, Y3, Z3, X4, Y4, 
  6911.      &Z4)
  6912.       IF( NY.GT.0) GOTO 10
  6913.       IF( NX.EQ. M) GOTO 10
  6914.       NXP= NX+1
  6915.       IX= LD- M
  6916.       DO 9  IY= NXP, M
  6917.       IX= IX+1
  6918.       NYP= IX-3
  6919.       X( NYP)= X( IX)
  6920.       Y( NYP)= Y( IX)
  6921.       Z( NYP)= Z( IX)
  6922.       BI( NYP)= BI( IX)
  6923.       SALP( NYP)= SALP( IX)
  6924.       T1X( NYP)= T1X( IX)
  6925.       T1Y( NYP)= T1Y( IX)
  6926.       T1Z( NYP)= T1Z( IX)
  6927.       T2X( NYP)= T2X( IX)
  6928.       T2Y( NYP)= T2Y( IX)
  6929.     9 T2Z( NYP)= T2Z( IX)
  6930.    10 MI= LD+1- NX
  6931.       XS= X( MI)
  6932.       YS= Y( MI)
  6933.       ZS= Z( MI)
  6934.       XA= BI( MI)*.25
  6935.       XST= SQRT( XA)*.5
  6936.       S1X= T1X( MI)
  6937.       S1Y= T1Y( MI)
  6938.       S1Z= T1Z( MI)
  6939.       S2X= T2X( MI)
  6940.       S2Y= T2Y( MI)
  6941.       S2Z= T2Z( MI)
  6942.       SALN= SALP( MI)
  6943.       XT= XST
  6944.       YT= XST
  6945.       IF( NY.GT.0) GOTO 11
  6946.       MIA= MI
  6947.       GOTO 12
  6948.    11 M= M+1
  6949.       MP= MP+1
  6950.       MIA= LD+1- M
  6951.    12 DO 13  IX=1,4
  6952.       X( MIA)= XS+ XT* S1X+ YT* S2X
  6953.       Y( MIA)= YS+ XT* S1Y+ YT* S2Y
  6954.       Z( MIA)= ZS+ XT* S1Z+ YT* S2Z
  6955.       BI( MIA)= XA
  6956.       T1X( MIA)= S1X
  6957.       T1Y( MIA)= S1Y
  6958.       T1Z( MIA)= S1Z
  6959.       T2X( MIA)= S2X
  6960.       T2Y( MIA)= S2Y
  6961.       T2Z( MIA)= S2Z
  6962.       SALP( MIA)= SALN
  6963.       IF( IX.EQ.2) YT=- YT
  6964.       IF( IX.EQ.1.OR. IX.EQ.3) XT=- XT
  6965.       MIA= MIA-1
  6966.    13 CONTINUE
  6967.       M= M+3
  6968.       IF( NX.LE. MP) MP= MP+3
  6969.       IF( NY.GT.0) Z( MI)=10000.
  6970. C                                                                       
  6971.       RETURN
  6972.    14 FORMAT(' ERROR -- CORNERS OF QUADRILATERAL PATCH DO NOT LIE IN ',
  6973.      &'A PLANE')
  6974.       END
  6975. C ***
  6976. C     DOUBLE PRECISION 6/4/85
  6977. C
  6978.       SUBROUTINE PCINT( XI, YI, ZI, CABI, SABI, SALPI, E)
  6979. C ***
  6980. C     INTEGRATE OVER PATCHES AT WIRE CONNECTION POINT                   
  6981.       IMPLICIT REAL (A-H,O-Z)
  6982.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  6983.       COMPLEX  EXK, EYK, EZK, EXS, EYS, EZS, EXC, EYC, EZC, E, E1, 
  6984.      &E2, E3, E4, E5, E6, E7, E8, E9
  6985.       COMMON  /DATAJ/ S, B, XJ, YJ, ZJ, CABJ, SABJ, SALPJ, EXK, EYK, 
  6986.      &EZK, EXS, EYS, EZS, EXC, EYC, EZC, RKH, IEXK, IND1, INDD1, IND2, 
  6987.      &INDD2, PGND
  6988.       DIMENSION  E(9)
  6989.       EQUIVALENCE(T1XJ,CABJ),(T1YJ,SABJ),(T1ZJ,SALPJ),(T2XJ,B),(T2YJ,
  6990.      &IND1),(T2ZJ,IND2)
  6991.       DATA   TPI/6.283185308D+0/, NINT/10/
  6992.       D= SQRT( S)*.5
  6993.       DS=4.* D/ DFLOAT( NINT)
  6994.       DA= DS* DS
  6995.       GCON=1./ S
  6996.       FCON=1./(2.* TPI* D)
  6997.       XXJ= XJ
  6998.       XYJ= YJ
  6999.       XZJ= ZJ
  7000.       XS= S
  7001.       S= DA
  7002.       S1= D+ DS*.5
  7003.       XSS= XJ+ S1*( T1XJ+ T2XJ)
  7004.       YSS= YJ+ S1*( T1YJ+ T2YJ)
  7005.       ZSS= ZJ+ S1*( T1ZJ+ T2ZJ)
  7006.       S1= S1+ D
  7007.       S2X= S1
  7008.       E1=(0.,0.)
  7009.       E2=(0.,0.)
  7010.       E3=(0.,0.)
  7011.       E4=(0.,0.)
  7012.       E5=(0.,0.)
  7013.       E6=(0.,0.)
  7014.       E7=(0.,0.)
  7015.       E8=(0.,0.)
  7016.       E9=(0.,0.)
  7017.       DO 1  I1=1, NINT
  7018.       S1= S1- DS
  7019.       S2= S2X
  7020.       XSS= XSS- DS* T1XJ
  7021.       YSS= YSS- DS* T1YJ
  7022.       ZSS= ZSS- DS* T1ZJ
  7023.       XJ= XSS
  7024.       YJ= YSS
  7025.       ZJ= ZSS
  7026.       DO 1  I2=1, NINT
  7027.       S2= S2- DS
  7028.       XJ= XJ- DS* T2XJ
  7029.       YJ= YJ- DS* T2YJ
  7030.       ZJ= ZJ- DS* T2ZJ
  7031.       CALL UNERE( XI, YI, ZI)
  7032.       EXK= EXK* CABI+ EYK* SABI+ EZK* SALPI
  7033.       EXS= EXS* CABI+ EYS* SABI+ EZS* SALPI
  7034.       G1=( D+ S1)*( D+ S2)* GCON
  7035.       G2=( D- S1)*( D+ S2)* GCON
  7036.       G3=( D- S1)*( D- S2)* GCON
  7037.       G4=( D+ S1)*( D- S2)* GCON
  7038.       F2=( S1* S1+ S2* S2)* TPI
  7039.       F1= S1/ F2-( G1- G2- G3+ G4)* FCON
  7040.       F2= S2/ F2-( G1+ G2- G3- G4)* FCON
  7041.       E1= E1+ EXK* G1
  7042.       E2= E2+ EXK* G2
  7043.       E3= E3+ EXK* G3
  7044.       E4= E4+ EXK* G4
  7045.       E5= E5+ EXS* G1
  7046.       E6= E6+ EXS* G2
  7047.       E7= E7+ EXS* G3
  7048.       E8= E8+ EXS* G4
  7049.     1 E9= E9+ EXK* F1+ EXS* F2
  7050.       E(1)= E1
  7051.       E(2)= E2
  7052.       E(3)= E3
  7053.       E(4)= E4
  7054.       E(5)= E5
  7055.       E(6)= E6
  7056.       E(7)= E7
  7057.       E(8)= E8
  7058.       E(9)= E9
  7059.       XJ= XXJ
  7060.       YJ= XYJ
  7061.       ZJ= XZJ
  7062.       S= XS
  7063.       RETURN
  7064.       END
  7065. C ***
  7066. C     DOUBLE PRECISION 6/4/85
  7067. C
  7068.       SUBROUTINE PRNT( IN1, IN2, IN3, FL1, FL2, FL3, FL4, FL5, FL6, IA,
  7069.      & ICHAR)
  7070. C ***
  7071. C                                                                       
  7072. C     PRNT SETS UP THE PRINT FORMATS FOR IMPEDANCE LOADING              
  7073. C                                                                       
  7074.       IMPLICIT REAL (A-H,O-Z)
  7075.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  7076.       REAL  IFORM, IVAR
  7077.       DIMENSION  IVAR(13), IA(1), IFORM(8), IN(3), INT(3), FL(6), FLT(6
  7078.      &)
  7079.       INTEGER  HALL
  7080. C                                                                       
  7081. C     NUMBER OF CHARACTERS PER COMPUTER WORD IS NCPW                    
  7082. C                                                                       
  7083.       DATA   IFORM/5H(/3X,,3HI5,,3H5X,,3HA5,,6HE13.4,,4H13X,,3H3X,,
  7084.      &4H5A4)/
  7085.       DATA   HALL/4H ALL/
  7086.       IN(1)= IN1
  7087.       IN(2)= IN2
  7088.       IN(3)= IN3
  7089.       FL(1)= FL1
  7090.       FL(2)= FL2
  7091.       FL(3)= FL3
  7092.       FL(4)= FL4
  7093.       FL(5)= FL5
  7094. C                                                                       
  7095. C     INTEGER FORMAT                                                    
  7096. C                                                                       
  7097.       FL(6)= FL6
  7098.       NINT=0
  7099.       IVAR(1)= IFORM(1)
  7100.       K=1
  7101.       I1=1
  7102.       IF(.NOT.( IN1.EQ.0.AND. IN2.EQ.0.AND. IN3.EQ.0)) GOTO 1
  7103.       INT(1)= HALL
  7104.       NINT=1
  7105.       I1=2
  7106.       K= K+1
  7107.       IVAR( K)= IFORM(4)
  7108.     1 DO 3  I= I1,3
  7109.       K= K+1
  7110.       IF( IN( I).EQ.0) GOTO 2
  7111.       NINT= NINT+1
  7112.       INT( NINT)= IN( I)
  7113.       IVAR( K)= IFORM(2)
  7114.       GOTO 3
  7115.     2 IVAR( K)= IFORM(3)
  7116.     3 CONTINUE
  7117.       K= K+1
  7118. C                                                                       
  7119. C     DFLOATING POINT FORMAT                                            
  7120. C                                                                       
  7121.       IVAR( K)= IFORM(7)
  7122.       NFLT=0
  7123.       DO 5  I=1,6
  7124.       K= K+1
  7125.       IF( ABS( FL( I)).LT.1.D-20) GOTO 4
  7126.       NFLT= NFLT+1
  7127.       FLT( NFLT)= FL( I)
  7128.       IVAR( K)= IFORM(5)
  7129.       GOTO 5
  7130.     4 IVAR( K)= IFORM(6)
  7131.     5 CONTINUE
  7132.       K= K+1
  7133.       IVAR( K)= IFORM(7)
  7134.       K= K+1
  7135.       IVAR( K)= IFORM(8)
  7136.       WRITE( 6,IVAR) ( INT( I), I=1, NINT),( FLT( J), J=1, NFLT),( IA( 
  7137.      &L), L=1, ICHAR)
  7138.       RETURN
  7139.       END
  7140. C ***
  7141. C     DOUBLE PRECISION 6/4/85
  7142. C
  7143.       SUBROUTINE QDSRC( IS, V, E)
  7144. C ***
  7145. C     FILL INCIDENT FIELD ARRAY FOR CHARGE DISCONTINUITY VOLTAGE SOURCE 
  7146.       IMPLICIT REAL (A-H,O-Z)
  7147.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  7148.       COMPLEX  VQDS, CURD, CCJ, V, EXK, EYK, EZK, EXS, EYS, EZS, EXC
  7149.      &, EYC, EZC, ETK, ETS, ETC, VSANT, VQD, E, ZARRAY
  7150.       COMMON  /DATA/ LD, N1, N2, N, NP, M1, M2, M, MP, X( NM), Y( NM), 
  7151.      &Z( NM), SI( NM), BI( NM), ALP( NM), BET( NM), ICON1( N2M), ICON2(
  7152.      & N2M), ITAG( N2M), ICONX( NM), WLAM, IPSYM
  7153.       COMMON  /VSORC/ VQD(30), VSANT(30), VQDS(30), IVQD(30), ISANT(30)
  7154.      &, IQDS(30), NVQD, NSANT, NQDS
  7155.       COMMON  /SEGJ/ AX(30), BX(30), CX(30), JCO(30), JSNO, ISCON(50), 
  7156.      &NSCON, IPCON(10), NPCON
  7157.       COMMON  /DATAJ/ S, B, XJ, YJ, ZJ, CABJ, SABJ, SALPJ, EXK, EYK, 
  7158.      &EZK, EXS, EYS, EZS, EXC, EYC, EZC, RKH, IEXK, IND1, INDD1, IND2, 
  7159.      &INDD2, IPGND
  7160.       COMMON  /ANGL/ SALP( NM)
  7161.       COMMON  /ZLOAD/ ZARRAY( NM), NLOAD, NLODF
  7162.       DIMENSION  CCJX(2), E(1), CAB(1), SAB(1)
  7163.       DIMENSION  T1X(1), T1Y(1), T1Z(1), T2X(1), T2Y(1), T2Z(1)
  7164.       EQUIVALENCE(CCJ,CCJX),(CAB,ALP),(SAB,BET)
  7165.       EQUIVALENCE(T1X,SI),(T1Y,ALP),(T1Z,BET),(T2X,ICON1),(T2Y,ICON2),(
  7166.      &T2Z,ITAG)
  7167.       DATA   TP/6.283185308D+0/, CCJX/0.,-.01666666667D+0/
  7168.       I= ICON1( IS)
  7169.       ICON1( IS)=0
  7170.       CALL TBF( IS,0)
  7171.       ICON1( IS)= I
  7172.       S= SI( IS)*.5
  7173.       CURD= CCJ* V/(( LOG(2.* S/ BI( IS))-1.)*( BX( JSNO)* COS( TP* S)+
  7174.      & CX( JSNO)* SIN( TP* S))* WLAM)
  7175.       NQDS= NQDS+1
  7176.       VQDS( NQDS)= V
  7177.       IQDS( NQDS)= IS
  7178.       DO 20  JX=1, JSNO
  7179.       J= JCO( JX)
  7180.       S= SI( J)
  7181.       B= BI( J)
  7182.       XJ= X( J)
  7183.       YJ= Y( J)
  7184.       ZJ= Z( J)
  7185.       CABJ= CAB( J)
  7186.       SABJ= SAB( J)
  7187.       SALPJ= SALP( J)
  7188.       IF( IEXK.EQ.0) GOTO 16
  7189.       IPR= ICON1( J)
  7190.       IF( IPR) 1,6,2
  7191.     1 IPR=- IPR
  7192.       IF(- ICON1( IPR).NE. J) GOTO 7
  7193.       GOTO 4
  7194.     2 IF( IPR.NE. J) GOTO 3
  7195.       IF( CABJ* CABJ+ SABJ* SABJ.GT.1.D-8) GOTO 7
  7196.       GOTO 5
  7197.     3 IF( ICON2( IPR).NE. J) GOTO 7
  7198.     4 XI= ABS( CABJ* CAB( IPR)+ SABJ* SAB( IPR)+ SALPJ* SALP( IPR))
  7199.       IF( XI.LT.0.999999D+0) GOTO 7
  7200.       IF( ABS( BI( IPR)/ B-1.).GT.1.D-6) GOTO 7
  7201.     5 IND1=0
  7202.       GOTO 8
  7203.     6 IND1=1
  7204.       GOTO 8
  7205.     7 IND1=2
  7206.     8 IPR= ICON2( J)
  7207.       IF( IPR) 9,14,10
  7208.     9 IPR=- IPR
  7209.       IF(- ICON2( IPR).NE. J) GOTO 15
  7210.       GOTO 12
  7211.    10 IF( IPR.NE. J) GOTO 11
  7212.       IF( CABJ* CABJ+ SABJ* SABJ.GT.1.D-8) GOTO 15
  7213.       GOTO 13
  7214.    11 IF( ICON1( IPR).NE. J) GOTO 15
  7215.    12 XI= ABS( CABJ* CAB( IPR)+ SABJ* SAB( IPR)+ SALPJ* SALP( IPR))
  7216.       IF( XI.LT.0.999999D+0) GOTO 15
  7217.       IF( ABS( BI( IPR)/ B-1.).GT.1.D-6) GOTO 15
  7218.    13 IND2=0
  7219.       GOTO 16
  7220.    14 IND2=1
  7221.       GOTO 16
  7222.    15 IND2=2
  7223.    16 CONTINUE
  7224.       DO 17  I=1, N
  7225.       IJ= I- J
  7226.       XI= X( I)
  7227.       YI= Y( I)
  7228.       ZI= Z( I)
  7229.       AI= BI( I)
  7230.       CALL EFLD( XI, YI, ZI, AI, IJ)
  7231.       CABI= CAB( I)
  7232.       SABI= SAB( I)
  7233.       SALPI= SALP( I)
  7234.       ETK= EXK* CABI+ EYK* SABI+ EZK* SALPI
  7235.       ETS= EXS* CABI+ EYS* SABI+ EZS* SALPI
  7236.       ETC= EXC* CABI+ EYC* SABI+ EZC* SALPI
  7237.    17 E( I)= E( I)-( ETK* AX( JX)+ ETS* BX( JX)+ ETC* CX( JX))* CURD
  7238.       IF( M.EQ.0) GOTO 19
  7239.       IJ= LD+1
  7240.       I1= N
  7241.       DO 18  I=1, M
  7242.       IJ= IJ-1
  7243.       XI= X( IJ)
  7244.       YI= Y( IJ)
  7245.       ZI= Z( IJ)
  7246.       CALL HSFLD( XI, YI, ZI,0.)
  7247.       I1= I1+1
  7248.       TX= T2X( IJ)
  7249.       TY= T2Y( IJ)
  7250.       TZ= T2Z( IJ)
  7251.       ETK= EXK* TX+ EYK* TY+ EZK* TZ
  7252.       ETS= EXS* TX+ EYS* TY+ EZS* TZ
  7253.       ETC= EXC* TX+ EYC* TY+ EZC* TZ
  7254.       E( I1)= E( I1)+( ETK* AX( JX)+ ETS* BX( JX)+ ETC* CX( JX))* CURD*
  7255.      & SALP( IJ)
  7256.       I1= I1+1
  7257.       TX= T1X( IJ)
  7258.       TY= T1Y( IJ)
  7259.       TZ= T1Z( IJ)
  7260.       ETK= EXK* TX+ EYK* TY+ EZK* TZ
  7261.       ETS= EXS* TX+ EYS* TY+ EZS* TZ
  7262.       ETC= EXC* TX+ EYC* TY+ EZC* TZ
  7263.    18 E( I1)= E( I1)+( ETK* AX( JX)+ ETS* BX( JX)+ ETC* CX( JX))* CURD*
  7264.      & SALP( IJ)
  7265.    19 IF( NLOAD.GT.0.OR. NLODF.GT.0) E( J)= E( J)+ ZARRAY( J)* CURD*( 
  7266.      &AX( JX)+ CX( JX))
  7267.    20 CONTINUE
  7268.       RETURN
  7269.       END
  7270. C ***
  7271. C     DOUBLE PRECISION 6/4/85
  7272. C
  7273.       SUBROUTINE RDPAT
  7274. C ***
  7275. C     COMPUTE RADIATION PATTERN, GAIN, NORMALIZED GAIN                  
  7276.       IMPLICIT REAL (A-H,O-Z)
  7277.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  7278. C     INTEGER HPOL,HBLK,HCIR,HCLIF                                      
  7279.       REAL  IGNTP, IGAX, IGTP, HCIR, HBLK, HPOL, HCLIF, ISENS, COM
  7280.       COMPLEX  ETH, EPH, ERD, ZRATI, ZRATI2, T1, FRATI
  7281.       COMMON  /DATA/ LD, N1, N2, N, NP, M1, M2, M, MP, X( NM), Y( NM), 
  7282.      &Z( NM), SI( NM), BI( NM), ALP( NM), BET( NM), ICON1( N2M), ICON2(
  7283.      & N2M), ITAG( N2M), ICONX( NM), WLAM, IPSYM
  7284.       COMMON  /SAVE/ IP( N2M), KCOM, COM(19,5), EPSR, SIG, SCRWLT, 
  7285.      &SCRWRT, FMHZ
  7286.       COMMON  /GND/ ZRATI, ZRATI2, FRATI, CL, CH, SCRWL, SCRWR, NRADL, 
  7287.      &KSYMP, IFAR, IPERF, T1, T2
  7288.       COMMON  /FPAT/ NTH, NPH, IPD, IAVP, INOR, IAX, THETS, PHIS, DTH, 
  7289.      &DPH, RFLD, GNOR, CLT, CHT, EPSR2, SIG2, IXTYP, XPR6, PINR, PNLR, 
  7290.      &PLOSS, NEAR, NFEH, NRX, NRY, NRZ, XNR, YNR, ZNR, DXNR, DYNR, DZNR
  7291.      &
  7292. C***
  7293.       COMMON  /SCRATM/ GAIN(2*N2M)
  7294. C***
  7295.       COMMON  /PLOT/ IPLP1, IPLP2, IPLP3, IPLP4
  7296.       DIMENSION  IGTP(4), IGAX(4), IGNTP(10), HPOL(3)
  7297.       DATA   HPOL/6HLINEAR,5HRIGHT,4HLEFT/, HBLK, HCIR/1H ,6HCIRCLE/
  7298.       DATA   IGTP/6H    - ,6HPOWER ,6H- DIRE,6HCTIVE /
  7299.       DATA   IGAX/6H MAJOR,6H MINOR,6H VERT.,6H HOR. /
  7300.       DATA   IGNTP/6H MAJOR,6H AXIS ,6H MINOR,6H AXIS ,6H   VER,
  7301.      &6HTICAL ,6H HORIZ,6HONTAL ,6H      ,6HTOTAL /
  7302.       DATA   PI, TA, TD/3.141592654D+0,1.745329252D-02,57.29577951D+0/
  7303.       DATA   NORMAX/1200/
  7304.       IF( IFAR.LT.2) GOTO 2
  7305.       WRITE( 6,35) 
  7306.       IF( IFAR.LE.3) GOTO 1
  7307.       WRITE( 6,36)  NRADL, SCRWLT, SCRWRT
  7308.       IF( IFAR.EQ.4) GOTO 2
  7309.     1 IF( IFAR.EQ.2.OR. IFAR.EQ.5) HCLIF= HPOL(1)
  7310.       IF( IFAR.EQ.3.OR. IFAR.EQ.6) HCLIF= HCIR
  7311.       CL= CLT/ WLAM
  7312.       CH= CHT/ WLAM
  7313.       ZRATI2= SQRT(1./ CMPLX( EPSR2,- SIG2* WLAM*59.96))
  7314.       WRITE( 6,37)  HCLIF, CLT, CHT, EPSR2, SIG2
  7315.     2 IF( IFAR.NE.1) GOTO 3
  7316.       WRITE( 6,41) 
  7317.       GOTO 5
  7318.     3 I=2* IPD+1
  7319.       J= I+1
  7320.       ITMP1=2* IAX+1
  7321.       ITMP2= ITMP1+1
  7322.       WRITE( 6,38) 
  7323.       IF( RFLD.LT.1.D-20) GOTO 4
  7324.       EXRM=1./ RFLD
  7325.       EXRA= RFLD/ WLAM
  7326.       EXRA=-360.*( EXRA- AINT( EXRA))
  7327.       WRITE( 6,39)  RFLD, EXRM, EXRA
  7328.     4 WRITE( 6,40)  IGTP( I), IGTP( J), IGAX( ITMP1), IGAX( ITMP2)
  7329.     5 IF( IXTYP.EQ.0.OR. IXTYP.EQ.5) GOTO 7
  7330.       IF( IXTYP.EQ.4) GOTO 6
  7331.       PRAD=0.
  7332.       GCON=4.* PI/(1.+ XPR6* XPR6)
  7333.       GCOP= GCON
  7334.       GOTO 8
  7335.     6 PINR=394.51* XPR6* XPR6* WLAM* WLAM
  7336.     7 GCOP= WLAM* WLAM*2.* PI/(376.73* PINR)
  7337.       PRAD= PINR- PLOSS- PNLR
  7338.       GCON= GCOP
  7339.       IF( IPD.NE.0) GCON= GCON* PINR/ PRAD
  7340.     8 I=0
  7341.       GMAX=-1.E10
  7342.       PINT=0.
  7343.       TMP1= DPH* TA
  7344.       TMP2=.5* DTH* TA
  7345.       PHI= PHIS- DPH
  7346.       DO 29  KPH=1, NPH
  7347.       PHI= PHI+ DPH
  7348.       PHA= PHI* TA
  7349.       THET= THETS- DTH
  7350.       DO 29  KTH=1, NTH
  7351.       THET= THET+ DTH
  7352.       IF( KSYMP.EQ.2.AND. THET.GT.90.01.AND. IFAR.NE.1) GOTO 29
  7353.       THA= THET* TA
  7354.       IF( IFAR.EQ.1) GOTO 9
  7355.       CALL FFLD( THA, PHA, ETH, EPH)
  7356.       GOTO 10
  7357.     9 CALL GFLD( RFLD/ WLAM, PHA, THET/ WLAM, ETH, EPH, ERD, ZRATI, 
  7358.      &KSYMP)
  7359.       ERDM= ABS( ERD)
  7360.       ERDA= CANG( ERD)
  7361.    10 ETHM2= REAL( ETH* CONJG( ETH))
  7362.       ETHM= SQRT( ETHM2)
  7363.       ETHA= CANG( ETH)
  7364.       EPHM2= REAL( EPH* CONJG( EPH))
  7365.       EPHM= SQRT( EPHM2)
  7366.       EPHA= CANG( EPH)
  7367. C     ELLIPTICAL POLARIZATION CALC.                                     
  7368.       IF( IFAR.EQ.1) GOTO 28
  7369.       IF( ETHM2.GT.1.D-20.OR. EPHM2.GT.1.D-20) GOTO 11
  7370.       TILTA=0.
  7371.       EMAJR2=0.
  7372.       EMINR2=0.
  7373.       AXRAT=0.
  7374.       ISENS= HBLK
  7375.       GOTO 16
  7376.    11 DFAZ= EPHA- ETHA
  7377.       IF( EPHA.LT.0.) GOTO 12
  7378.       DFAZ2= DFAZ-360.
  7379.       GOTO 13
  7380.    12 DFAZ2= DFAZ+360.
  7381.    13 IF( ABS( DFAZ).GT. ABS( DFAZ2)) DFAZ= DFAZ2
  7382.       CDFAZ= COS( DFAZ* TA)
  7383.       TSTOR1= ETHM2- EPHM2
  7384.       TSTOR2=2.* EPHM* ETHM* CDFAZ
  7385.       TILTA=.5* ATGN2( TSTOR2, TSTOR1)
  7386.       STILTA= SIN( TILTA)
  7387.       TSTOR1= TSTOR1* STILTA* STILTA
  7388.       TSTOR2= TSTOR2* STILTA* COS( TILTA)
  7389.       EMAJR2=- TSTOR1+ TSTOR2+ ETHM2
  7390.       EMINR2= TSTOR1- TSTOR2+ EPHM2
  7391.       IF( EMINR2.LT.0.) EMINR2=0.
  7392.       AXRAT= SQRT( EMINR2/ EMAJR2)
  7393.       TILTA= TILTA* TD
  7394.       IF( AXRAT.GT.1.D-5) GOTO 14
  7395.       ISENS= HPOL(1)
  7396.       GOTO 16
  7397.    14 IF( DFAZ.GT.0.) GOTO 15
  7398.       ISENS= HPOL(2)
  7399.       GOTO 16
  7400.    15 ISENS= HPOL(3)
  7401.    16 GNMJ= DB10( GCON* EMAJR2)
  7402.       GNMN= DB10( GCON* EMINR2)
  7403.       GNV= DB10( GCON* ETHM2)
  7404.       GNH= DB10( GCON* EPHM2)
  7405.       GTOT= DB10( GCON*( ETHM2+ EPHM2))
  7406.       IF( INOR.LT.1) GOTO 23
  7407.       I= I+1
  7408.       IF( I.GT. NORMAX) GOTO 23
  7409.       GOTO (17,18,19,20,21), INOR
  7410.    17 TSTOR1= GNMJ
  7411.       GOTO 22
  7412.    18 TSTOR1= GNMN
  7413.       GOTO 22
  7414.    19 TSTOR1= GNV
  7415.       GOTO 22
  7416.    20 TSTOR1= GNH
  7417.       GOTO 22
  7418.    21 TSTOR1= GTOT
  7419.    22 GAIN( I)= TSTOR1
  7420.       IF( TSTOR1.GT. GMAX) GMAX= TSTOR1
  7421.    23 IF( IAVP.EQ.0) GOTO 24
  7422.       TSTOR1= GCOP*( ETHM2+ EPHM2)
  7423.       TMP3= THA- TMP2
  7424.       TMP4= THA+ TMP2
  7425.       IF( KTH.EQ.1) TMP3= THA
  7426.       IF( KTH.EQ. NTH) TMP4= THA
  7427.       DA= ABS( TMP1*( COS( TMP3)- COS( TMP4)))
  7428.       IF( KPH.EQ.1.OR. KPH.EQ. NPH) DA=.5* DA
  7429.       PINT= PINT+ TSTOR1* DA
  7430.       IF( IAVP.EQ.2) GOTO 29
  7431.    24 IF( IAX.EQ.1) GOTO 25
  7432.       TMP5= GNMJ
  7433.       TMP6= GNMN
  7434.       GOTO 26
  7435.    25 TMP5= GNV
  7436.       TMP6= GNH
  7437.    26 ETHM= ETHM* WLAM
  7438.       EPHM= EPHM* WLAM
  7439.       IF( RFLD.LT.1.D-20) GOTO 27
  7440.       ETHM= ETHM* EXRM
  7441.       ETHA= ETHA+ EXRA
  7442.       EPHM= EPHM* EXRM
  7443.       EPHA= EPHA+ EXRA
  7444. C      GO TO 29                                                         
  7445. C***
  7446. C28    WRITE(6,43)  RFLD,PHI,THET,ETHM,ETHA,EPHM,EPHA,ERDM,ERDA         
  7447.    27 WRITE( 6,42)  THET, PHI, TMP5, TMP6, GTOT, AXRAT, TILTA, ISENS, 
  7448.      ÐM, ETHA, EPHM, EPHA
  7449.       IF( IPLP1.NE.3) GOTO 299
  7450.       IF( IPLP3.EQ.0) GOTO 290
  7451.       IF( IPLP2.EQ.1.AND. IPLP3.EQ.1) WRITE( 8,*)  THET, ETHM, ETHA
  7452.       IF( IPLP2.EQ.1.AND. IPLP3.EQ.2) WRITE( 8,*)  THET, EPHM, EPHA
  7453.       IF( IPLP2.EQ.2.AND. IPLP3.EQ.1) WRITE( 8,*)  PHI, ETHM, ETHA
  7454.       IF( IPLP2.EQ.2.AND. IPLP3.EQ.2) WRITE( 8,*)  PHI, EPHM, EPHA
  7455.       IF( IPLP4.EQ.0) GOTO 299
  7456.   290 IF( IPLP2.EQ.1.AND. IPLP4.EQ.1) WRITE( 8,*)  THET, TMP5
  7457.       IF( IPLP2.EQ.1.AND. IPLP4.EQ.2) WRITE( 8,*)  THET, TMP6
  7458.       IF( IPLP2.EQ.1.AND. IPLP4.EQ.3) WRITE( 8,*)  THET, GTOT
  7459.       IF( IPLP2.EQ.2.AND. IPLP4.EQ.1) WRITE( 8,*)  PHI, TMP5
  7460.       IF( IPLP2.EQ.2.AND. IPLP4.EQ.2) WRITE( 8,*)  PHI, TMP6
  7461.       IF( IPLP2.EQ.2.AND. IPLP4.EQ.3) WRITE( 8,*)  PHI, GTOT
  7462.       GOTO 299
  7463.    28 WRITE( 6,43)  RFLD, PHI, THET, ETHM, ETHA, EPHM, EPHA, ERDM, ERDA
  7464.      &
  7465. C***
  7466.   299 CONTINUE
  7467.    29 CONTINUE
  7468.       IF( IAVP.EQ.0) GOTO 30
  7469.       TMP3= THETS* TA
  7470.       TMP4= TMP3+ DTH* TA* DFLOAT( NTH-1)
  7471.       TMP3= ABS( DPH* TA* DFLOAT( NPH-1)*( COS( TMP3)- COS( TMP4)))
  7472.       PINT= PINT/ TMP3
  7473.       TMP3= TMP3/ PI
  7474.       WRITE( 6,44)  PINT, TMP3
  7475.    30 IF( INOR.EQ.0) GOTO 34
  7476.       IF( ABS( GNOR).GT.1.D-20) GMAX= GNOR
  7477.       ITMP1=( INOR-1)*2+1
  7478.       ITMP2= ITMP1+1
  7479.       WRITE( 6,45)  IGNTP( ITMP1), IGNTP( ITMP2), GMAX
  7480.       ITMP2= NPH* NTH
  7481.       IF( ITMP2.GT. NORMAX) ITMP2= NORMAX
  7482.       ITMP1=( ITMP2+2)/3
  7483.       ITMP2= ITMP1*3- ITMP2
  7484.       ITMP3= ITMP1
  7485.       ITMP4=2* ITMP1
  7486.       IF( ITMP2.EQ.2) ITMP4= ITMP4-1
  7487.       DO 31  I=1, ITMP1
  7488.       ITMP3= ITMP3+1
  7489.       ITMP4= ITMP4+1
  7490.       J=( I-1)/ NTH
  7491.       TMP1= THETS+ DFLOAT( I- J* NTH-1)* DTH
  7492.       TMP2= PHIS+ DFLOAT( J)* DPH
  7493.       J=( ITMP3-1)/ NTH
  7494.       TMP3= THETS+ DFLOAT( ITMP3- J* NTH-1)* DTH
  7495.       TMP4= PHIS+ DFLOAT( J)* DPH
  7496.       J=( ITMP4-1)/ NTH
  7497.       TMP5= THETS+ DFLOAT( ITMP4- J* NTH-1)* DTH
  7498.       TMP6= PHIS+ DFLOAT( J)* DPH
  7499.       TSTOR1= GAIN( I)- GMAX
  7500.       IF( I.EQ. ITMP1.AND. ITMP2.NE.0) GOTO 32
  7501.       TSTOR2= GAIN( ITMP3)- GMAX
  7502.       PINT= GAIN( ITMP4)- GMAX
  7503.    31 WRITE( 6,46)  TMP1, TMP2, TSTOR1, TMP3, TMP4, TSTOR2, TMP5, TMP6,
  7504.      & PINT
  7505.       GOTO 34
  7506.    32 IF( ITMP2.EQ.2) GOTO 33
  7507.       TSTOR2= GAIN( ITMP3)- GMAX
  7508.       WRITE( 6,46)  TMP1, TMP2, TSTOR1, TMP3, TMP4, TSTOR2
  7509.       GOTO 34
  7510.    33 WRITE( 6,46)  TMP1, TMP2, TSTOR1
  7511. C                                                                       
  7512.    34 RETURN
  7513.    35 FORMAT(///,31X,'- - - FAR FIELD GROUND PARAMETERS - - -',//)
  7514.    36 FORMAT(40X,'RADIAL WIRE GROUND SCREEN',/,40X,I5,' WIRES',/,40X,
  7515.      &'WIRE LENGTH=',F8.2,' METERS',/,40X,'WIRE RADIUS=',1P,E10.3,
  7516.      &' METERS')
  7517.    37 FORMAT(40X,A6,' CLIFF',/,40X,'EDGE DISTANCE=',F9.2,' METERS',/,40
  7518.      &X,'HEIGHT=',F8.2,' METERS',/,40X,'SECOND MEDIUM -',/,40X,'RELA',
  7519.      &'TIVE DIELECTRIC CONST.=',F7.3,/,40X,'CONDUCTIVITY=',1P,E10.3,
  7520.      &' MHOS')
  7521.    38 FORMAT(///,48X,'- - - RADIATION PATTERNS - - -')
  7522.    39 FORMAT(54X,'RANGE=',1P,E13.6,' METERS',/,54X,'EXP(-JKR)/R=',E12.5
  7523.      &,' AT PHASE',0P,F7.2,' DEGREES',/)
  7524.    40 FORMAT(/,2X,'- - ANGLES - -',7X,2A6,'GAINS -',7X,'- - - POLARI',
  7525.      &'ZATION - - -',4X,'- - - E(THETA) - - -',4X,'- - - E(PHI) - -',
  7526.      &' -',/,2X,'THETA',5X,'PHI',7X,A6,2X,A6,3X,'TOTAL',6X,'AXIAL',5X,
  7527.      &'TILT',3X,'SENSE',2(5X,'MAGNITUDE',4X,'PHASE'),/,2(1X,'DEGREES',1
  7528.      &X),3(6X,'DB'),8X,'RATIO',5X,'DEG.',8X,2(6X,'VOLTS/M',4X,'DEGRE',
  7529.      &'ES'))
  7530.    41 FORMAT(///,28X,' - - - RADIATED FIELDS NEAR GROUND - - -',//,8X,
  7531.      &'- - - LOCATION - - -',10X,'- - E(THETA) - -',8X,'- - E(PHI) -'
  7532.      &' -',8X,'- - E(RADIAL) - -',/,7X,'RHO',6X,'PHI',9X,'Z',12X,'MAG',
  7533.      &6X,'PHASE',9X,'MAG',6X,'PHASE',9X,'MAG',6X,'PHASE',/,5X,'METERS',
  7534.      &3X,'DEGREES',4X,'METERS',8X,'VOLTS/M',3X,'DEGREES',6X,'VOLTS/M',3
  7535.      &X,'DEGREES',6X,'VOLTS/M',3X,'DEGREES',/)
  7536.    42 FORMAT(1X,F7.2,F9.2,3X,3F8.2,F11.5,F9.2,2X,A6,2(1P,E15.5,0P,F9.2)
  7537.      &)
  7538.    43 FORMAT(3X,F9.2,2X,F7.2,2X,F9.2,1X,3(3X,1P,E11.4,2X,0P,F7.2))
  7539.    44 FORMAT(//,3X,'AVERAGE POWER GAIN=',1P,E12.5,7X,'SOLID ANGLE U',
  7540.      &'SED IN AVERAGING=(',0P,F7.4,')*PI STERADIANS.',//)
  7541.    45 FORMAT(//,37X,'- - - - NORMALIZED GAIN - - - -',//,37X,2A6,'GAI',
  7542.      &'N',/,38X,'NORMALIZATION FACTOR =',F9.2,' DB',//,3(4X,
  7543.      &'- - ANGLES'' - -',6X,'GAIN',7X),/,3(4X,'THETA',5X,'PHI',8X,'DB',
  7544.      &8X),/,3(3X,'DEGREES',2X,'DEGREES',16X))
  7545.    46 FORMAT(3(1X,2F9.2,1X,F9.2,6X))
  7546.       END
  7547. C ***
  7548. C     DOUBLE PRECISION 6/4/85
  7549. C
  7550.       SUBROUTINE READGM( GM, I1, I2, X1, Y1, Z1, X2, Y2, Z2, RAD)
  7551. C ***
  7552.       IMPLICIT REAL (A-H,O-Z)
  7553.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  7554.       INTEGER*4 NTOT
  7555.       INTEGER*4 NINT
  7556.       INTEGER*4 NFLT
  7557.       PARAMETER (NTOT=9, NINT=2, NFLT=7)
  7558.       INTEGER  IARR( NINT), BP( NTOT), EP( NTOT)
  7559.       DIMENSION  RARR( NFLT)
  7560.       CHARACTER   LINE*133, GM*2, BUFFER*132, BUFFER1*132
  7561.       READ( 5,10)  LINE
  7562.    10 FORMAT(A)
  7563.       NLIN= LEN(LINE)
  7564.       CALL STR0PC( LINE(1: NLIN), LINE(1: NLIN))
  7565.       IF( NLIN.LT.2) GOTO 110
  7566.       IF( NLIN.LE.132) GOTO 20
  7567.       NLIN=132
  7568.       LINE(133:133)=' '
  7569.    20 GM= LINE(1:2)
  7570.       NLIN= NLIN+1
  7571.       DO 30  I=1, NINT
  7572.    30 IARR( I)=0
  7573.       DO 40  I=1, NFLT
  7574.    40 RARR( I)=0.0
  7575.       IC=2
  7576.       IFOUND=0
  7577.       DO 70  I=1, NTOT
  7578.    50 IC= IC+1
  7579.       IF( IC.GE. NLIN) GOTO 80
  7580.       IF( LINE( IC: IC).EQ.' '.OR. LINE( IC: IC).EQ.',') GOTO 50
  7581. C BEGINNING OF I-TH NUMERICAL FIELD
  7582.       BP( I)= IC
  7583.    60 IC= IC+1
  7584.       IF( IC.GT. NLIN) GOTO 80
  7585.       IF( LINE( IC: IC).NE.' '.AND. LINE( IC: IC).NE.',') GOTO 60
  7586. C END OF I-TH NUMERICAL FIELD
  7587.       EP( I)= IC-1
  7588.       IFOUND= I
  7589.    70 CONTINUE
  7590.    80 CONTINUE
  7591.       DO 90  I=1, MIN( IFOUND, NINT)
  7592.       NLEN= EP( I)- BP( I)+1
  7593.       BUFFER= LINE( BP( I): EP( I))
  7594.       IND= INDEX( BUFFER(1: NLEN),'.')
  7595.       IF( IND.GT.0.AND. IND.LT. NLEN) GOTO 110
  7596. C USER PUT DECIMAL POINT FOR INTEGER
  7597.       IF( IND.EQ. NLEN) NLEN= NLEN-1
  7598.       READ( BUFFER(1: NLEN),111,ERR=110)  IARR( I)
  7599. 111   format(i3)
  7600.    90 CONTINUE
  7601.       DO 100  I= NINT+1, IFOUND
  7602.       NLEN= EP( I)- BP( I)+1
  7603.       BUFFER= LINE( BP( I): EP( I))
  7604.       IND= INDEX( BUFFER(1: NLEN),'.')
  7605. C USER FORGOT DECIMAL POINT FOR REAL
  7606.       IF( IND.EQ.0) THEN
  7607.       IF( NLEN.GE.15) GOTO 110
  7608.       INDE= INDEX( BUFFER(1: NLEN),'E')
  7609.       NLEN= NLEN+1
  7610.       IF( INDE.EQ.0) THEN
  7611.       BUFFER( NLEN: NLEN)='.'
  7612.       ELSE
  7613.       BUFFER1= BUFFER(1: INDD-1)//'.'// BUFFER( INDE: NLEN-1)
  7614.       BUFFER= BUFFER1
  7615.       ENDIF
  7616.       ENDIF
  7617.       READ( BUFFER(1: NLEN),112,ERR=110)  RARR( I- NINT)
  7618.   112 format (F15.7)
  7619.   100 CONTINUE
  7620.       I1= IARR(1)
  7621.       I2= IARR(2)
  7622.       X1= RARR(1)
  7623.       Y1= RARR(2)
  7624.       Z1= RARR(3)
  7625.       X2= RARR(4)
  7626.       Y2= RARR(5)
  7627.       Z2= RARR(6)
  7628.       RAD= RARR(7)
  7629.       RETURN
  7630.   110 WRITE( 6,*) ' GEOMETRY DATA CARD ERROR'
  7631.       WRITE( 6,*)  LINE(1: MAX(1, NLIN-1))
  7632.       STOP
  7633.       END
  7634. C ***
  7635. C     DOUBLE PRECISION 6/4/85
  7636. C
  7637.       SUBROUTINE READMN( GM, I1, I2, I3, I4, F1, F2, F3, F4, F5, F6)
  7638. C ***
  7639.       IMPLICIT REAL (A-H,O-Z)
  7640.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  7641.       INTEGER*4 NTOT
  7642.       INTEGER*4 NINT
  7643.       INTEGER*4 NFLT
  7644.       PARAMETER (NTOT=10, NINT=4, NFLT=6)
  7645.       INTEGER  IARR( NINT), BP( NTOT), EP( NTOT)
  7646.       DIMENSION  RARR( NFLT)
  7647.       CHARACTER   LINE*133, GM*2, BUFFER*132, BUFFER1*132
  7648.       READ( 5,10)  LINE
  7649.    10 FORMAT(A)
  7650.       NLIN= LEN(LINE)
  7651.       CALL STR0PC( LINE(1: NLIN), LINE(1: NLIN))
  7652.       IF( NLIN.LT.2) GOTO 110
  7653.       IF( NLIN.LE.132) GOTO 20
  7654.       NLIN=132
  7655.       LINE(133:133)=' '
  7656.    20 GM= LINE(1:2)
  7657.       NLIN= NLIN+1
  7658.       DO 30  I=1, NINT
  7659.    30 IARR( I)=0
  7660.       DO 40  I=1, NFLT
  7661.    40 RARR( I)=0.0
  7662.       IC=2
  7663.       IFOUND=0
  7664.       DO 70  I=1, NTOT
  7665.    50 IC= IC+1
  7666.       IF( IC.GE. NLIN) GOTO 80
  7667.       IF( LINE( IC: IC).EQ.' '.OR. LINE( IC: IC).EQ.',') GOTO 50
  7668. C BEGINNING OF I-TH NUMERICAL FIELD
  7669.       BP( I)= IC
  7670.    60 IC= IC+1
  7671.       IF( IC.GT. NLIN) GOTO 80
  7672.       IF( LINE( IC: IC).NE.' '.AND. LINE( IC: IC).NE.',') GOTO 60
  7673. C END OF I-TH NUMERICAL FIELD
  7674.       EP( I)= IC-1
  7675.       IFOUND= I
  7676.    70 CONTINUE
  7677.    80 CONTINUE
  7678.       DO 90  I=1, MIN( IFOUND, NINT)
  7679.       NLEN= EP( I)- BP( I)+1
  7680.       BUFFER= LINE( BP( I): EP( I))
  7681.       IND= INDEX( BUFFER(1: NLEN),'.')
  7682.       IF( IND.GT.0.AND. IND.LT. NLEN) GOTO 110
  7683. C USER PUT DECIMAL POINT FOR INTEGER
  7684.       IF( IND.EQ. NLEN) NLEN= NLEN-1
  7685.       READ( BUFFER(1: NLEN),111,ERR=110)  IARR( I)
  7686.   111 format(I5)
  7687.    90 CONTINUE
  7688.       DO 100  I= NINT+1, IFOUND
  7689.       NLEN= EP( I)- BP( I)+1
  7690.       BUFFER= LINE( BP( I): EP( I))
  7691.       IND= INDEX( BUFFER(1: NLEN),'.')
  7692. C USER FORGOT DECIMAL POINT FOR REAL
  7693.       IF( IND.EQ.0) THEN
  7694.       IF( NLEN.GE.15) GOTO 110
  7695.       INDE= INDEX( BUFFER(1: NLEN),'E')
  7696.       NLEN= NLEN+1
  7697.       IF( INDE.EQ.0) THEN
  7698.       BUFFER( NLEN: NLEN)='.'
  7699.       ELSE
  7700.       BUFFER1= BUFFER(1: INDD-1)//'.'// BUFFER( INDE: NLEN-1)
  7701.       BUFFER= BUFFER1
  7702.       ENDIF
  7703.       ENDIF
  7704.       READ( BUFFER(1: NLEN),112,ERR=110)  RARR( I- NINT)
  7705.   112 format(F15.7)
  7706.   100 CONTINUE
  7707.       I1= IARR(1)
  7708.       I2= IARR(2)
  7709.       I3= IARR(3)
  7710.       I4= IARR(4)
  7711.       F1= RARR(1)
  7712.       F2= RARR(2)
  7713.       F3= RARR(3)
  7714.       F4= RARR(4)
  7715.       F5= RARR(5)
  7716.       F6= RARR(6)
  7717.       RETURN
  7718.   110 WRITE( 6,*) '          FAULTY DATA CARD AFTER GEOMETRY SECTION'
  7719.       WRITE( 6,*)  LINE(1: MAX(1, NLIN-1))
  7720.       STOP
  7721.       END
  7722. C ***
  7723. C     DOUBLE PRECISION 6/4/85
  7724. C
  7725.       SUBROUTINE REBLK( B, BX, NB, NBX, N2C)
  7726. C ***
  7727. C     REBLOCK ARRAY B IN N.G.F. SOLUTION FROM BLOCKS OF ROWS ON TAPE14  
  7728. C     TO BLOCKS OF COLUMNS ON TAPE16                                    
  7729.       IMPLICIT REAL (A-H,O-Z)
  7730.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  7731.       COMPLEX  B, BX
  7732.       COMMON  /MATPAR/ ICASE, NBLOKS, NPBLK, NLAST, NBLSYM, NPSYM, 
  7733.      &NLSYM, IMAT, ICASX, NBBX, NPBX, NLBX, NBBL, NPBL, NLBL
  7734.       DIMENSION  B( NB,1), BX( NBX,1)
  7735.       REWIND 16
  7736.       NIB=0
  7737.       NPB= NPBL
  7738.       DO 3  IB=1, NBBL
  7739.       IF( IB.EQ. NBBL) NPB= NLBL
  7740.       REWIND 14
  7741.       NIX=0
  7742.       NPX= NPBX
  7743.       DO 2  IBX=1, NBBX
  7744.       IF( IBX.EQ. NBBX) NPX= NLBX
  7745.       READ( 14) (( BX( I, J), I=1, NPX), J=1, N2C)
  7746.       DO 1  I=1, NPX
  7747.       IX= I+ NIX
  7748.       DO 1  J=1, NPB
  7749.     1 B( IX, J)= BX( I, J+ NIB)
  7750.     2 NIX= NIX+ NPBX
  7751.       WRITE( 16) (( B( I, J), I=1, NB), J=1, NPB)
  7752.     3 NIB= NIB+ NPBL
  7753.       REWIND 14
  7754.       REWIND 16
  7755.       RETURN
  7756.       END
  7757. C ***
  7758. C     DOUBLE PRECISION 6/4/85
  7759. C
  7760.       SUBROUTINE REFLC( IX, IY, IZ, ITX, NOP)
  7761. C ***
  7762. C                                                                       
  7763. C     REFLC REFLECTS PARTIAL STRUCTURE ALONG X,Y, OR Z AXES OR ROTATES  
  7764. C     STRUCTURE TO COMPLETE A SYMMETRIC STRUCTURE.                      
  7765. C                                                                       
  7766.       IMPLICIT REAL (A-H,O-Z)
  7767.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  7768.       COMMON  /DATA/ LD, N1, N2, N, NP, M1, M2, M, MP, X( NM), Y( NM), 
  7769.      &Z( NM), SI( NM), BI( NM), ALP( NM), BET( NM), ICON1( N2M), ICON2(
  7770.      & N2M), ITAG( N2M), ICONX( NM), WLAM, IPSYM
  7771.       COMMON  /ANGL/ SALP( NM)
  7772.       DIMENSION  T1X(1), T1Y(1), T1Z(1), T2X(1), T2Y(1), T2Z(1), X2(1),
  7773.      & Y2(1), Z2(1)
  7774.       EQUIVALENCE(T1X,SI),(T1Y,ALP),(T1Z,BET),(T2X,ICON1),(T2Y,ICON2),(
  7775.      &T2Z,ITAG),(X2,SI),(Y2,ALP),(Z2,BET)
  7776.       NP= N
  7777.       MP= M
  7778.       IPSYM=0
  7779.       ITI= ITX
  7780.       IF( IX.LT.0) GOTO 19
  7781.       IF( NOP.EQ.0) RETURN
  7782.       IPSYM=1
  7783. C                                                                       
  7784. C     REFLECT ALONG Z AXIS                                              
  7785. C                                                                       
  7786.       IF( IZ.EQ.0) GOTO 6
  7787.       IPSYM=2
  7788.       IF( N.LT. N2) GOTO 3
  7789.       DO 2  I= N2, N
  7790.       NX= I+ N- N1
  7791.       E1= Z( I)
  7792.       E2= Z2( I)
  7793.       IF( ABS( E1)+ ABS( E2).GT.1.D-5.AND. E1* E2.GE.-1.D-6) GOTO 1
  7794.       WRITE( 6,24)  I
  7795.       STOP
  7796.     1 X( NX)= X( I)
  7797.       Y( NX)= Y( I)
  7798.       Z( NX)=- E1
  7799.       X2( NX)= X2( I)
  7800.       Y2( NX)= Y2( I)
  7801.       Z2( NX)=- E2
  7802.       ITAGI= ITAG( I)
  7803.       IF( ITAGI.EQ.0) ITAG( NX)=0
  7804.       IF( ITAGI.NE.0) ITAG( NX)= ITAGI+ ITI
  7805.     2 BI( NX)= BI( I)
  7806.       N= N*2- N1
  7807.       ITI= ITI*2
  7808.     3 IF( M.LT. M2) GOTO 6
  7809.       NXX= LD+1- M1
  7810.       DO 5  I= M2, M
  7811.       NXX= NXX-1
  7812.       NX= NXX- M+ M1
  7813.       IF( ABS( Z( NXX)).GT.1.D-10) GOTO 4
  7814.       WRITE( 6,25)  I
  7815.       STOP
  7816.     4 X( NX)= X( NXX)
  7817.       Y( NX)= Y( NXX)
  7818.       Z( NX)=- Z( NXX)
  7819.       T1X( NX)= T1X( NXX)
  7820.       T1Y( NX)= T1Y( NXX)
  7821.       T1Z( NX)=- T1Z( NXX)
  7822.       T2X( NX)= T2X( NXX)
  7823.       T2Y( NX)= T2Y( NXX)
  7824.       T2Z( NX)=- T2Z( NXX)
  7825.       SALP( NX)=- SALP( NXX)
  7826.     5 BI( NX)= BI( NXX)
  7827.       M= M*2- M1
  7828. C                                                                       
  7829. C     REFLECT ALONG Y AXIS                                              
  7830. C                                                                       
  7831.     6 IF( IY.EQ.0) GOTO 12
  7832.       IF( N.LT. N2) GOTO 9
  7833.       DO 8  I= N2, N
  7834.       NX= I+ N- N1
  7835.       E1= Y( I)
  7836.       E2= Y2( I)
  7837.       IF( ABS( E1)+ ABS( E2).GT.1.D-5.AND. E1* E2.GE.-1.D-6) GOTO 7
  7838.       WRITE( 6,24)  I
  7839.       STOP
  7840.     7 X( NX)= X( I)
  7841.       Y( NX)=- E1
  7842.       Z( NX)= Z( I)
  7843.       X2( NX)= X2( I)
  7844.       Y2( NX)=- E2
  7845.       Z2( NX)= Z2( I)
  7846.       ITAGI= ITAG( I)
  7847.       IF( ITAGI.EQ.0) ITAG( NX)=0
  7848.       IF( ITAGI.NE.0) ITAG( NX)= ITAGI+ ITI
  7849.     8 BI( NX)= BI( I)
  7850.       N= N*2- N1
  7851.       ITI= ITI*2
  7852.     9 IF( M.LT. M2) GOTO 12
  7853.       NXX= LD+1- M1
  7854.       DO 11  I= M2, M
  7855.       NXX= NXX-1
  7856.       NX= NXX- M+ M1
  7857.       IF( ABS( Y( NXX)).GT.1.D-10) GOTO 10
  7858.       WRITE( 6,25)  I
  7859.       STOP
  7860.    10 X( NX)= X( NXX)
  7861.       Y( NX)=- Y( NXX)
  7862.       Z( NX)= Z( NXX)
  7863.       T1X( NX)= T1X( NXX)
  7864.       T1Y( NX)=- T1Y( NXX)
  7865.       T1Z( NX)= T1Z( NXX)
  7866.       T2X( NX)= T2X( NXX)
  7867.       T2Y( NX)=- T2Y( NXX)
  7868.       T2Z( NX)= T2Z( NXX)
  7869.       SALP( NX)=- SALP( NXX)
  7870.    11 BI( NX)= BI( NXX)
  7871.       M= M*2- M1
  7872. C                                                                       
  7873. C     REFLECT ALONG X AXIS                                              
  7874. C                                                                       
  7875.    12 IF( IX.EQ.0) GOTO 18
  7876.       IF( N.LT. N2) GOTO 15
  7877.       DO 14  I= N2, N
  7878.       NX= I+ N- N1
  7879.       E1= X( I)
  7880.       E2= X2( I)
  7881.       IF( ABS( E1)+ ABS( E2).GT.1.D-5.AND. E1* E2.GE.-1.D-6) GOTO 13
  7882.       WRITE( 6,24)  I
  7883.       STOP
  7884.    13 X( NX)=- E1
  7885.       Y( NX)= Y( I)
  7886.       Z( NX)= Z( I)
  7887.       X2( NX)=- E2
  7888.       Y2( NX)= Y2( I)
  7889.       Z2( NX)= Z2( I)
  7890.       ITAGI= ITAG( I)
  7891.       IF( ITAGI.EQ.0) ITAG( NX)=0
  7892.       IF( ITAGI.NE.0) ITAG( NX)= ITAGI+ ITI
  7893.    14 BI( NX)= BI( I)
  7894.       N= N*2- N1
  7895.    15 IF( M.LT. M2) GOTO 18
  7896.       NXX= LD+1- M1
  7897.       DO 17  I= M2, M
  7898.       NXX= NXX-1
  7899.       NX= NXX- M+ M1
  7900.       IF( ABS( X( NXX)).GT.1.D-10) GOTO 16
  7901.       WRITE( 6,25)  I
  7902.       STOP
  7903.    16 X( NX)=- X( NXX)
  7904.       Y( NX)= Y( NXX)
  7905.       Z( NX)= Z( NXX)
  7906.       T1X( NX)=- T1X( NXX)
  7907.       T1Y( NX)= T1Y( NXX)
  7908.       T1Z( NX)= T1Z( NXX)
  7909.       T2X( NX)=- T2X( NXX)
  7910.       T2Y( NX)= T2Y( NXX)
  7911.       T2Z( NX)= T2Z( NXX)
  7912.       SALP( NX)=- SALP( NXX)
  7913.    17 BI( NX)= BI( NXX)
  7914.       M= M*2- M1
  7915. C                                                                       
  7916. C     REPRODUCE STRUCTURE WITH ROTATION TO FORM CYLINDRICAL STRUCTURE   
  7917. C                                                                       
  7918.    18 RETURN
  7919.    19 FNOP= NOP
  7920.       IPSYM=-1
  7921.       SAM=6.283185308D+0/ FNOP
  7922.       CS= COS( SAM)
  7923.       SS= SIN( SAM)
  7924.       IF( N.LT. N2) GOTO 21
  7925.       N= N1+( N- N1)* NOP
  7926.       NX= NP+1
  7927.       DO 20  I= NX, N
  7928.       K= I- NP+ N1
  7929.       XK= X( K)
  7930.       YK= Y( K)
  7931.       X( I)= XK* CS- YK* SS
  7932.       Y( I)= XK* SS+ YK* CS
  7933.       Z( I)= Z( K)
  7934.       XK= X2( K)
  7935.       YK= Y2( K)
  7936.       X2( I)= XK* CS- YK* SS
  7937.       Y2( I)= XK* SS+ YK* CS
  7938.       Z2( I)= Z2( K)
  7939.       ITAGI= ITAG( K)
  7940.       IF( ITAGI.EQ.0) ITAG( I)=0
  7941.       IF( ITAGI.NE.0) ITAG( I)= ITAGI+ ITI
  7942.    20 BI( I)= BI( K)
  7943.    21 IF( M.LT. M2) GOTO 23
  7944.       M= M1+( M- M1)* NOP
  7945.       NX= MP+1
  7946.       K= LD+1- M1
  7947.       DO 22  I= NX, M
  7948.       K= K-1
  7949.       J= K- MP+ M1
  7950.       XK= X( K)
  7951.       YK= Y( K)
  7952.       X( J)= XK* CS- YK* SS
  7953.       Y( J)= XK* SS+ YK* CS
  7954.       Z( J)= Z( K)
  7955.       XK= T1X( K)
  7956.       YK= T1Y( K)
  7957.       T1X( J)= XK* CS- YK* SS
  7958.       T1Y( J)= XK* SS+ YK* CS
  7959.       T1Z( J)= T1Z( K)
  7960.       XK= T2X( K)
  7961.       YK= T2Y( K)
  7962.       T2X( J)= XK* CS- YK* SS
  7963.       T2Y( J)= XK* SS+ YK* CS
  7964.       T2Z( J)= T2Z( K)
  7965.       SALP( J)= SALP( K)
  7966.    22 BI( J)= BI( K)
  7967. C                                                                       
  7968.    23 RETURN
  7969.    24 FORMAT(' GEOMETRY DATA ERROR--SEGMENT,I5,26H LIES IN PLANE OF S',
  7970.      &'YMMETRY')
  7971.    25 FORMAT(' GEOMETRY DATA ERROR--PATCH,I4,26H LIES IN PLANE OF SYM',
  7972.      &'METRY')
  7973.       END
  7974. C ***
  7975. C     DOUBLE PRECISION 6/4/85
  7976. C
  7977.       SUBROUTINE ROM2( A, B, SUM, DMIN)
  7978. C ***
  7979. C                                                                       
  7980. C     FOR THE SOMMERFELD GROUND OPTION, ROM2 INTEGRATES OVER THE SOURCE 
  7981. C     SEGMENT TO OBTAIN THE TOTAL FIELD DUE TO GROUND.  THE METHOD OF   
  7982. C     VARIABLE INTERVAL WIDTH ROMBERG INTEGRATION IS USED.  THERE ARE 9 
  7983. C     FIELD COMPONENTS - THE X, Y, AND Z COMPONENTS DUE TO CONSTANT,    
  7984. C     SINE, AND COSINE CURRENT DISTRIBUTIONS.                           
  7985. C                                                                       
  7986.       IMPLICIT REAL (A-H,O-Z)
  7987.       COMPLEX  SUM, G1, G2, G3, G4, G5, T00, T01, T10, T02, T11, T20
  7988.      &
  7989.       DIMENSION  SUM(9), G1(9), G2(9), G3(9), G4(9), G5(9), T01(9), T10
  7990.      &(9), T20(9)
  7991.       DATA   NM, NTS, NX, N/65536,4,1,9/, RX/1.D-4/
  7992.       Z= A
  7993.       ZE= B
  7994.       S= B- A
  7995.       IF( S.GE.0.) GOTO 1
  7996.       WRITE( 6,18) 
  7997.       STOP
  7998.     1 EP= S/(1.E4* NM)
  7999.       ZEND= ZE- EP
  8000.       DO 2  I=1, N
  8001.     2 SUM( I)=(0.,0.)
  8002.       NS= NX
  8003.       NT=0
  8004.       CALL SFLDS( Z, G1)
  8005.     3 DZ= S/ NS
  8006.       IF( Z+ DZ.LE. ZE) GOTO 4
  8007.       DZ= ZE- Z
  8008.       IF( DZ.LE. EP) GOTO 17
  8009.     4 DZOT= DZ*.5
  8010.       CALL SFLDS( Z+ DZOT, G3)
  8011.       CALL SFLDS( Z+ DZ, G5)
  8012.     5 TMAG1=0.
  8013. C                                                                       
  8014. C     EVALUATE 3 POINT ROMBERG RESULT AND TEST CONVERGENCE.             
  8015. C                                                                       
  8016.       TMAG2=0.
  8017.       DO 6  I=1, N
  8018.       T00=( G1( I)+ G5( I))* DZOT
  8019.       T01( I)=( T00+ DZ* G3( I))*.5
  8020.       T10( I)=(4.* T01( I)- T00)/3.
  8021.       IF( I.GT.3) GOTO 6
  8022.       TR= REAL( T01( I))
  8023.       TI= AIMAG( T01( I))
  8024.       TMAG1= TMAG1+ TR* TR+ TI* TI
  8025.       TR= REAL( T10( I))
  8026.       TI= AIMAG( T10( I))
  8027.       TMAG2= TMAG2+ TR* TR+ TI* TI
  8028.     6 CONTINUE
  8029.       TMAG1= SQRT( TMAG1)
  8030.       TMAG2= SQRT( TMAG2)
  8031.       CALL TEST( TMAG1, TMAG2, TR,0.,0., TI, DMIN)
  8032.       IF( TR.GT. RX) GOTO 8
  8033.       DO 7  I=1, N
  8034.     7 SUM( I)= SUM( I)+ T10( I)
  8035.       NT= NT+2
  8036.       GOTO 12
  8037.     8 CALL SFLDS( Z+ DZ*.25, G2)
  8038.       CALL SFLDS( Z+ DZ*.75, G4)
  8039.       TMAG1=0.
  8040. C                                                                       
  8041. C     EVALUATE 5 POINT ROMBERG RESULT AND TEST CONVERGENCE.             
  8042. C                                                                       
  8043.       TMAG2=0.
  8044.       DO 9  I=1, N
  8045.       T02=( T01( I)+ DZOT*( G2( I)+ G4( I)))*.5
  8046.       T11=(4.* T02- T01( I))/3.
  8047.       T20( I)=(16.* T11- T10( I))/15.
  8048.       IF( I.GT.3) GOTO 9
  8049.       TR= REAL( T11)
  8050.       TI= AIMAG( T11)
  8051.       TMAG1= TMAG1+ TR* TR+ TI* TI
  8052.       TR= REAL( T20( I))
  8053.       TI= AIMAG( T20( I))
  8054.       TMAG2= TMAG2+ TR* TR+ TI* TI
  8055.     9 CONTINUE
  8056.       TMAG1= SQRT( TMAG1)
  8057.       TMAG2= SQRT( TMAG2)
  8058.       CALL TEST( TMAG1, TMAG2, TR,0.,0., TI, DMIN)
  8059.       IF( TR.GT. RX) GOTO 14
  8060.    10 DO 11  I=1, N
  8061.    11 SUM( I)= SUM( I)+ T20( I)
  8062.       NT= NT+1
  8063.    12 Z= Z+ DZ
  8064.       IF( Z.GT. ZEND) GOTO 17
  8065.       DO 13  I=1, N
  8066.    13 G1( I)= G5( I)
  8067.       IF( NT.LT. NTS.OR. NS.LE. NX) GOTO 3
  8068.       NS= NS/2
  8069.       NT=1
  8070.       GOTO 3
  8071.    14 NT=0
  8072.       IF( NS.LT. NM) GOTO 15
  8073.       WRITE( 6,19)  Z
  8074.       GOTO 10
  8075.    15 NS= NS*2
  8076.       DZ= S/ NS
  8077.       DZOT= DZ*.5
  8078.       DO 16  I=1, N
  8079.       G5( I)= G3( I)
  8080.    16 G3( I)= G2( I)
  8081.       GOTO 5
  8082.    17 CONTINUE
  8083. C                                                                       
  8084.       RETURN
  8085.    18 FORMAT(' ERROR - B LESS THAN A IN ROM2')
  8086.    19 FORMAT(' ROM2 -- STEP SIZE LIMITED AT Z =',1P,E12.5)
  8087.       END
  8088. C ***
  8089. C     DOUBLE PRECISION 6/4/85
  8090. C
  8091.       SUBROUTINE SBF( I, IS, AA, BB, CC)
  8092. C ***
  8093. C     COMPUTE COMPONENT OF BASIS FUNCTION I ON SEGMENT IS.              
  8094.       IMPLICIT REAL (A-H,O-Z)
  8095.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  8096.       COMMON  /DATA/ LD, N1, N2, N, NP, M1, M2, M, MP, X( NM), Y( NM), 
  8097.      &Z( NM), SI( NM), BI( NM), ALP( NM), BET( NM), ICON1( N2M), ICON2(
  8098.      & N2M), ITAG( N2M), ICONX( NM), WLAM, IPSYM
  8099.       DATA   PI/3.141592654D+0/, JMAX/30/
  8100.       AA=0.
  8101.       BB=0.
  8102.       CC=0.
  8103.       JUNE=0
  8104.       JSNO=0
  8105.       PP=0.
  8106.       JCOX= ICON1( I)
  8107.       IF( JCOX.GT.10000) JCOX= I
  8108.       JEND=-1
  8109.       IEND=-1
  8110.       SIG=-1.
  8111.       IF( JCOX) 1,11,2
  8112.     1 JCOX=- JCOX
  8113.       GOTO 3
  8114.     2 SIG=- SIG
  8115.       JEND=- JEND
  8116.     3 JSNO= JSNO+1
  8117.       IF( JSNO.GE. JMAX) GOTO 24
  8118.       D= PI* SI( JCOX)
  8119.       SDH= SIN( D)
  8120.       CDH= COS( D)
  8121.       SD=2.* SDH* CDH
  8122.       IF( D.GT.0.015) GOTO 4
  8123.       OMC=4.* D* D
  8124.       OMC=((1.3888889D-3* OMC-4.1666666667D-2)* OMC+.5)* OMC
  8125.       GOTO 5
  8126.     4 OMC=1.- CDH* CDH+ SDH* SDH
  8127.     5 AJ=1./( LOG(1./( PI* BI( JCOX)))-.577215664D+0)
  8128.       PP= PP- OMC/ SD* AJ
  8129.       IF( JCOX.NE. IS) GOTO 6
  8130.       AA= AJ/ SD* SIG
  8131.       BB= AJ/(2.* CDH)
  8132.       CC=- AJ/(2.* SDH)* SIG
  8133.       JUNE= IEND
  8134.     6 IF( JCOX.EQ. I) GOTO 9
  8135.       IF( JEND.EQ.1) GOTO 7
  8136.       JCOX= ICON1( JCOX)
  8137.       GOTO 8
  8138.     7 JCOX= ICON2( JCOX)
  8139.     8 IF( IABS( JCOX).EQ. I) GOTO 10
  8140.       IF( JCOX) 1,24,2
  8141.     9 IF( JCOX.EQ. IS) BB=- BB
  8142.    10 IF( IEND.EQ.1) GOTO 12
  8143.    11 PM=- PP
  8144.       PP=0.
  8145.       NJUN1= JSNO
  8146.       JCOX= ICON2( I)
  8147.       IF( JCOX.GT.10000) JCOX= I
  8148.       JEND=1
  8149.       IEND=1
  8150.       SIG=-1.
  8151.       IF( JCOX) 1,12,2
  8152.    12 NJUN2= JSNO- NJUN1
  8153.       D= PI* SI( I)
  8154.       SDH= SIN( D)
  8155.       CDH= COS( D)
  8156.       SD=2.* SDH* CDH
  8157.       CD= CDH* CDH- SDH* SDH
  8158.       IF( D.GT.0.015) GOTO 13
  8159.       OMC=4.* D* D
  8160.       OMC=((1.3888889D-3* OMC-4.1666666667D-2)* OMC+.5)* OMC
  8161.       GOTO 14
  8162.    13 OMC=1.- CD
  8163.    14 AP=1./( LOG(1./( PI* BI( I)))-.577215664D+0)
  8164.       AJ= AP
  8165.       IF( NJUN1.EQ.0) GOTO 19
  8166.       IF( NJUN2.EQ.0) GOTO 21
  8167.       QP= SD*( PM* PP+ AJ* AP)+ CD*( PM* AP- PP* AJ)
  8168.       QM=( AP* OMC- PP* SD)/ QP
  8169.       QP=-( AJ* OMC+ PM* SD)/ QP
  8170.       IF( JUNE) 15,18,16
  8171.    15 AA= AA* QM
  8172.       BB= BB* QM
  8173.       CC= CC* QM
  8174.       GOTO 17
  8175.    16 AA=- AA* QP
  8176.       BB= BB* QP
  8177.       CC=- CC* QP
  8178.    17 IF( I.NE. IS) RETURN
  8179.    18 AA= AA-1.
  8180.       BB= BB+( AJ* QM+ AP* QP)* SDH/ SD
  8181.       CC= CC+( AJ* QM- AP* QP)* CDH/ SD
  8182.       RETURN
  8183.    19 IF( NJUN2.EQ.0) GOTO 23
  8184.       QP= PI* BI( I)
  8185.       XXI= QP* QP
  8186.       XXI= QP*(1.-.5* XXI)/(1.- XXI)
  8187.       QP=-( OMC+ XXI* SD)/( SD*( AP+ XXI* PP)+ CD*( XXI* AP- PP))
  8188.       IF( JUNE.NE.1) GOTO 20
  8189.       AA=- AA* QP
  8190.       BB= BB* QP
  8191.       CC=- CC* QP
  8192.       IF( I.NE. IS) RETURN
  8193.    20 AA= AA-1.
  8194.       D= CD- XXI* SD
  8195.       BB= BB+( SDH+ AP* QP*( CDH- XXI* SDH))/ D
  8196.       CC= CC+( CDH+ AP* QP*( SDH+ XXI* CDH))/ D
  8197.       RETURN
  8198.    21 QM= PI* BI( I)
  8199.       XXI= QM* QM
  8200.       XXI= QM*(1.-.5* XXI)/(1.- XXI)
  8201.       QM=( OMC+ XXI* SD)/( SD*( AJ- XXI* PM)+ CD*( PM+ XXI* AJ))
  8202.       IF( JUNE.NE.-1) GOTO 22
  8203.       AA= AA* QM
  8204.       BB= BB* QM
  8205.       CC= CC* QM
  8206.       IF( I.NE. IS) RETURN
  8207.    22 AA= AA-1.
  8208.       D= CD- XXI* SD
  8209.       BB= BB+( AJ* QM*( CDH- XXI* SDH)- SDH)/ D
  8210.       CC= CC+( CDH- AJ* QM*( SDH+ XXI* CDH))/ D
  8211.       RETURN
  8212.    23 AA=-1.
  8213.       QP= PI* BI( I)
  8214.       XXI= QP* QP
  8215.       XXI= QP*(1.-.5* XXI)/(1.- XXI)
  8216.       CC=1./( CDH- XXI* SDH)
  8217.       RETURN
  8218.    24 WRITE( 6,25)  I
  8219. C                                                                       
  8220.       STOP
  8221.    25 FORMAT(' SBF - SEGMENT CONNECTION ERROR FOR SEGMENT',I5)
  8222.       END
  8223. C ***
  8224. C     DOUBLE PRECISION 6/4/85
  8225. C
  8226.       SUBROUTINE SFLDS( T, E)
  8227. C ***
  8228. C                                                                       
  8229. C     SFLDX RETURNS THE FIELD DUE TO GROUND FOR A CURRENT ELEMENT ON    
  8230. C     THE SOURCE SEGMENT AT T RELATIVE TO THE SEGMENT CENTER.           
  8231. C                                                                       
  8232.       IMPLICIT REAL (A-H,O-Z)
  8233.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  8234.       COMPLEX  E, ERV, EZV, ERH, EZH, EPH, T1, EXK, EYK, EZK, EXS, 
  8235.      &EYS, EZS, EXC, EYC, EZC, XX1, XX2, U, U2, ZRATI, ZRATI2, FRATI, 
  8236.      &ER, ET, HRV, HZV, HRH
  8237.       COMMON  /DATAJ/ S, B, XJ, YJ, ZJ, CABJ, SABJ, SALPJ, EXK, EYK, 
  8238.      &EZK, EXS, EYS, EZS, EXC, EYC, EZC, RKH, IEXK, IND1, INDD1, IND2, 
  8239.      &INDD2, IPGND
  8240.       COMMON  /INCOM/ XO, YO, ZO, SN, XSN, YSN, ISNOR
  8241.       COMMON  /GWAV/ U, U2, XX1, XX2, R1, R2, ZMH, ZPH
  8242.       COMMON  /GND/ ZRATI, ZRATI2, FRATI, CL, CH, SCRWL, SCRWR, NRADL, 
  8243.      &KSYMP, IFAR, IPERF, T1, T2
  8244.       DIMENSION  E(9)
  8245.       DATA   PI/3.141592654D+0/, TP/6.283185308D+0/, POT/1.570796327D+0
  8246.      &/
  8247.       XT= XJ+ T* CABJ
  8248.       YT= YJ+ T* SABJ
  8249.       ZT= ZJ+ T* SALPJ
  8250.       RHX= XO- XT
  8251.       RHY= YO- YT
  8252.       RHS= RHX* RHX+ RHY* RHY
  8253.       RHO= SQRT( RHS)
  8254.       IF( RHO.GT.0.) GOTO 1
  8255.       RHX=1.
  8256.       RHY=0.
  8257.       PHX=0.
  8258.       PHY=1.
  8259.       GOTO 2
  8260.     1 RHX= RHX/ RHO
  8261.       RHY= RHY/ RHO
  8262.       PHX=- RHY
  8263.       PHY= RHX
  8264.     2 CPH= RHX* XSN+ RHY* YSN
  8265.       SPH= RHY* XSN- RHX* YSN
  8266.       IF( ABS( CPH).LT.1.D-10) CPH=0.
  8267.       IF( ABS( SPH).LT.1.D-10) SPH=0.
  8268.       ZPH= ZO+ ZT
  8269.       ZPHS= ZPH* ZPH
  8270.       R2S= RHS+ ZPHS
  8271.       R2= SQRT( R2S)
  8272.       RK= R2* TP
  8273.       XX2= CMPLX( COS( RK),- SIN( RK))
  8274. C                                                                       
  8275. C     USE NORTON APPROXIMATION FOR FIELD DUE TO GROUND.  CURRENT IS     
  8276. C     LUMPED AT SEGMENT CENTER WITH CURRENT MOMENT FOR CONSTANT, SINE,  
  8277. C     OR COSINE DISTRIBUTION.                                           
  8278. C                                                                       
  8279.       IF( ISNOR.EQ.1) GOTO 3
  8280.       ZMH=1.
  8281.       R1=1.
  8282.       XX1=0.
  8283.       CALL GWAVE( ERV, EZV, ERH, EZH, EPH)
  8284.       ET=-(0.,4.77134)* FRATI* XX2/( R2S* R2)
  8285.       ER=2.* ET* CMPLX(1.0, RK)
  8286.       ET= ET* CMPLX(1.0 - RK* RK, RK)
  8287.       HRV=( ER+ ET)* RHO* ZPH/ R2S
  8288.       HZV=( ZPHS* ER- RHS* ET)/ R2S
  8289.       HRH=( RHS* ER- ZPHS* ET)/ R2S
  8290.       ERV= ERV- HRV
  8291.       EZV= EZV- HZV
  8292.       ERH= ERH+ HRH
  8293.       EZH= EZH+ HRV
  8294.       EPH= EPH+ ET
  8295.       ERV= ERV* SALPJ
  8296.       EZV= EZV* SALPJ
  8297.       ERH= ERH* SN* CPH
  8298.       EZH= EZH* SN* CPH
  8299.       EPH= EPH* SN* SPH
  8300.       ERH= ERV+ ERH
  8301.       E(1)=( ERH* RHX+ EPH* PHX)* S
  8302.       E(2)=( ERH* RHY+ EPH* PHY)* S
  8303.       E(3)=( EZV+ EZH)* S
  8304.       E(4)=0.
  8305.       E(5)=0.
  8306.       E(6)=0.
  8307.       SFAC= PI* S
  8308.       SFAC= SIN( SFAC)/ SFAC
  8309.       E(7)= E(1)* SFAC
  8310.       E(8)= E(2)* SFAC
  8311.       E(9)= E(3)* SFAC
  8312. C                                                                       
  8313. C     INTERPOLATE IN SOMMERFELD FIELD TABLES                            
  8314. C                                                                       
  8315.       RETURN
  8316.     3 IF( RHO.LT.1.D-12) GOTO 4
  8317.       THET= ATAN( ZPH/ RHO)
  8318.       GOTO 5
  8319.     4 THET= POT
  8320. C     COMBINE VERTICAL AND HORIZONTAL COMPONENTS AND CONVERT TO X,Y,Z   
  8321. C     COMPONENTS.  MULTIPLY BY EXP(-JKR)/R.                             
  8322.     5 CALL INTRP( R2, THET, ERV, EZV, ERH, EPH)
  8323.       XX2= XX2/ R2
  8324.       SFAC= SN* CPH
  8325.       ERH= XX2*( SALPJ* ERV+ SFAC* ERH)
  8326.       EZH= XX2*( SALPJ* EZV- SFAC* ERV)
  8327. C     X,Y,Z FIELDS FOR CONSTANT CURRENT                                 
  8328.       EPH= SN* SPH* XX2* EPH
  8329.       E(1)= ERH* RHX+ EPH* PHX
  8330.       E(2)= ERH* RHY+ EPH* PHY
  8331.       E(3)= EZH
  8332. C     X,Y,Z FIELDS FOR SINE CURRENT                                     
  8333.       RK= TP* T
  8334.       SFAC= SIN( RK)
  8335.       E(4)= E(1)* SFAC
  8336.       E(5)= E(2)* SFAC
  8337. C     X,Y,Z FIELDS FOR COSINE CURRENT                                   
  8338.       E(6)= E(3)* SFAC
  8339.       SFAC= COS( RK)
  8340.       E(7)= E(1)* SFAC
  8341.       E(8)= E(2)* SFAC
  8342.       E(9)= E(3)* SFAC
  8343.       RETURN
  8344.       END
  8345. C ***
  8346. C     DOUBLE PRECISION 6/4/85
  8347. C
  8348.       SUBROUTINE SOLGF( A, B, C, D, XY, IP, NP, N1, N, MP, M1, M, N1C, 
  8349.      &N2C, N2CZ)
  8350. C ***
  8351. C     SOLVE FOR CURRENT IN N.G.F. PROCEDURE                             
  8352.       IMPLICIT REAL (A-H,O-Z)
  8353.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  8354.       COMPLEX  A, B, C, D, SUM, XY, Y
  8355.       COMMON  /SCRATM/ Y( N2M)
  8356.       COMMON  /SEGJ/ AX(30), BX(30), CX(30), JCO(30), JSNO, ISCON(50), 
  8357.      &NSCON, IPCON(10), NPCON
  8358.       COMMON  /MATPAR/ ICASE, NBLOKS, NPBLK, NLAST, NBLSYM, NPSYM, 
  8359.      &NLSYM, IMAT, ICASX, NBBX, NPBX, NLBX, NBBL, NPBL, NLBL
  8360.       DIMENSION  A(1), B( N1C,1), C( N1C,1), D( N2CZ,1), IP(1), XY(1)
  8361.       IFL=14
  8362.       IF( ICASX.GT.0) IFL=13
  8363. C     NORMAL SOLUTION.  NOT N.G.F.                                      
  8364.       IF( N2C.GT.0) GOTO 1
  8365.       CALL SOLVES( A, IP, XY, N1C,1, NP, N, MP, M,13, IFL)
  8366.       GOTO 22
  8367. C     REORDER EXCITATION ARRAY                                          
  8368.     1 IF( N1.EQ. N.OR. M1.EQ.0) GOTO 5
  8369.       N2= N1+1
  8370.       JJ= N+1
  8371.       NPM= N+2* M1
  8372.       DO 2  I= N2, NPM
  8373.     2 Y( I)= XY( I)
  8374.       J= N1
  8375.       DO 3  I= JJ, NPM
  8376.       J= J+1
  8377.     3 XY( J)= Y( I)
  8378.       DO 4  I= N2, N
  8379.       J= J+1
  8380.     4 XY( J)= Y( I)
  8381.     5 NEQS= NSCON+2* NPCON
  8382.       IF( NEQS.EQ.0) GOTO 7
  8383.       NEQ= N1C+ N2C
  8384. C     COMPUTE INV(A)E1                                                  
  8385.       NEQS= NEQ- NEQS+1
  8386.       DO 6  I= NEQS, NEQ
  8387.     6 XY( I)=(0.,0.)
  8388.     7 CALL SOLVES( A, IP, XY, N1C,1, NP, N1, MP, M1,13, IFL)
  8389.       NI=0
  8390. C     COMPUTE E2-C(INV(A)E1)                                            
  8391.       NPB= NPBL
  8392.       DO 10  JJ=1, NBBL
  8393.       IF( JJ.EQ. NBBL) NPB= NLBL
  8394.       IF( ICASX.GT.1) READ( 15) (( C( I, J), I=1, N1C), J=1, NPB)
  8395.       II= N1C+ NI
  8396.       DO 9  I=1, NPB
  8397.       SUM=(0.,0.)
  8398.       DO 8  J=1, N1C
  8399.     8 SUM= SUM+ C( J, I)* XY( J)
  8400.       J= II+ I
  8401.     9 XY( J)= XY( J)- SUM
  8402.    10 NI= NI+ NPBL
  8403.       REWIND 15
  8404. C     COMPUTE INV(D)(E2-C(INV(A)E1)) = I2                               
  8405.       JJ= N1C+1
  8406.       IF( ICASX.GT.1) GOTO 11
  8407.       CALL SOLVE( N2C, D, IP( JJ), XY( JJ), N2C)
  8408.       GOTO 13
  8409.    11 IF( ICASX.EQ.4) GOTO 12
  8410.       NI= N2C* N2C
  8411.       READ( 11) ( B( J,1), J=1, NI)
  8412.       REWIND 11
  8413.       CALL SOLVE( N2C, B, IP( JJ), XY( JJ), N2C)
  8414.       GOTO 13
  8415.    12 NBLSYS= NBLSYM
  8416.       NPSYS= NPSYM
  8417.       NLSYS= NLSYM
  8418.       ICASS= ICASE
  8419.       NBLSYM= NBBL
  8420.       NPSYM= NPBL
  8421.       NLSYM= NLBL
  8422.       ICASE=3
  8423.       REWIND 11
  8424.       REWIND 16
  8425.       CALL LTSOLV( B, N2C, IP( JJ), XY( JJ), N2C,1,11,16)
  8426.       REWIND 11
  8427.       REWIND 16
  8428.       NBLSYM= NBLSYS
  8429.       NPSYM= NPSYS
  8430.       NLSYM= NLSYS
  8431.       ICASE= ICASS
  8432.    13 NI=0
  8433. C     COMPUTE INV(A)E1-(INV(A)B)I2 = I1                                 
  8434.       NPB= NPBL
  8435.       DO 16  JJ=1, NBBL
  8436.       IF( JJ.EQ. NBBL) NPB= NLBL
  8437.       IF( ICASX.GT.1) READ( 14) (( B( I, J), I=1, N1C), J=1, NPB)
  8438.       II= N1C+ NI
  8439.       DO 15  I=1, N1C
  8440.       SUM=(0.,0.)
  8441.       DO 14  J=1, NPB
  8442.       JP= II+ J
  8443.    14 SUM= SUM+ B( I, J)* XY( JP)
  8444.    15 XY( I)= XY( I)- SUM
  8445.    16 NI= NI+ NPBL
  8446.       REWIND 14
  8447. C     REORDER CURRENT ARRAY                                             
  8448.       IF( N1.EQ. N.OR. M1.EQ.0) GOTO 20
  8449.       DO 17  I= N2, NPM
  8450.    17 Y( I)= XY( I)
  8451.       JJ= N1C+1
  8452.       J= N1
  8453.       DO 18  I= JJ, NPM
  8454.       J= J+1
  8455.    18 XY( J)= Y( I)
  8456.       DO 19  I= N2, N1C
  8457.       J= J+1
  8458.    19 XY( J)= Y( I)
  8459.    20 IF( NSCON.EQ.0) GOTO 22
  8460.       J= NEQS-1
  8461.       DO 21  I=1, NSCON
  8462.       J= J+1
  8463.       JJ= ISCON( I)
  8464.    21 XY( JJ)= XY( J)
  8465.    22 RETURN
  8466.       END
  8467. C ***
  8468. C     DOUBLE PRECISION 6/4/85
  8469. C
  8470.       SUBROUTINE SOLVE( N, A, IP, B, NDIM)
  8471. C ***
  8472. C                                                                       
  8473. C     SUBROUTINE TO SOLVE THE MATRIX EQUATION LU*X=B WHERE L IS A UNIT  
  8474. C     LOWER TRIANGULAR MATRIX AND U IS AN UPPER TRIANGULAR MATRIX BOTH  
  8475. C     OF WHICH ARE STORED IN A.  THE RHS VECTOR B IS INPUT AND THE      
  8476. C     SOLUTION IS RETURNED THROUGH VECTOR B.    (MATRIX TRANSPOSED.     
  8477. C                                                                       
  8478.       IMPLICIT REAL (A-H,O-Z)
  8479.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  8480.       COMPLEX  A, B, Y, SUM
  8481.       INTEGER  PI
  8482.       COMMON  /SCRATM/ Y( N2M)
  8483. C                                                                       
  8484. C     FORWARD SUBSTITUTION                                              
  8485. C                                                                       
  8486.       DIMENSION  A( NDIM, NDIM), IP( NDIM), B( NDIM)
  8487.       DO 3  I=1, N
  8488.       PI= IP( I)
  8489.       Y( I)= B( PI)
  8490.       B( PI)= B( I)
  8491.       IP1= I+1
  8492.       IF( IP1.GT. N) GOTO 2
  8493.       DO 1  J= IP1, N
  8494.       B( J)= B( J)- A( I, J)* Y( I)
  8495.     1 CONTINUE
  8496.     2 CONTINUE
  8497. C                                                                       
  8498. C     BACKWARD SUBSTITUTION                                             
  8499. C                                                                       
  8500.     3 CONTINUE
  8501.       DO 6  K=1, N
  8502.       I= N- K+1
  8503.       SUM=(0.,0.)
  8504.       IP1= I+1
  8505.       IF( IP1.GT. N) GOTO 5
  8506.       DO 4  J= IP1, N
  8507.       SUM= SUM+ A( J, I)* B( J)
  8508.     4 CONTINUE
  8509.     5 CONTINUE
  8510.       B( I)=( Y( I)- SUM)/ A( I, I)
  8511.     6 CONTINUE
  8512.       RETURN
  8513.       END
  8514. C ***
  8515. C     DOUBLE PRECISION 6/4/85
  8516. C
  8517.       SUBROUTINE SOLVES( A, IP, B, NEQ, NRH, NP, N, MP, M, IFL1, IFL2)
  8518. C ***
  8519. C                                                                       
  8520. C     SUBROUTINE SOLVES, FOR SYMMETRIC STRUCTURES, HANDLES THE          
  8521. C     TRANSFORMATION OF THE RIGHT HAND SIDE VECTOR AND SOLUTION OF THE  
  8522. C     MATRIX EQ.                                                        
  8523. C                                                                       
  8524.       IMPLICIT REAL (A-H,O-Z)
  8525.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  8526.       COMPLEX  A, B, Y, SUM, SSX
  8527.       COMMON  /SMAT/ SSX(16,16)
  8528.       COMMON  /SCRATM/ Y( N2M)
  8529.       COMMON  /MATPAR/ ICASE, NBLOKS, NPBLK, NLAST, NBLSYM, NPSYM, 
  8530.      &NLSYM, IMAT, ICASX, NBBX, NPBX, NLBX, NBBL, NPBL, NLBL
  8531.       DIMENSION  A(1), IP(1), B( NEQ, NRH)
  8532.       NPEQ= NP+2* MP
  8533.       NOP= NEQ/ NPEQ
  8534.       FNOP= NOP
  8535.       FNORM=1./ FNOP
  8536.       NROW= NEQ
  8537.       IF( ICASE.GT.3) NROW= NPEQ
  8538.       IF( NOP.EQ.1) GOTO 11
  8539.       DO 10  IC=1, NRH
  8540.       IF( N.EQ.0.OR. M.EQ.0) GOTO 6
  8541.       DO 1  I=1, NEQ
  8542.     1 Y( I)= B( I, IC)
  8543.       KK=2* MP
  8544.       IA= NP
  8545.       IB= N
  8546.       J= NP
  8547.       DO 5  K=1, NOP
  8548.       IF( K.EQ.1) GOTO 3
  8549.       DO 2  I=1, NP
  8550.       IA= IA+1
  8551.       J= J+1
  8552.     2 B( J, IC)= Y( IA)
  8553.       IF( K.EQ. NOP) GOTO 5
  8554.     3 DO 4  I=1, KK
  8555.       IB= IB+1
  8556.       J= J+1
  8557.     4 B( J, IC)= Y( IB)
  8558. C                                                                       
  8559. C     TRANSFORM MATRIX EQ. RHS VECTOR ACCORDING TO SYMMETRY MODES       
  8560. C                                                                       
  8561.     5 CONTINUE
  8562.     6 DO 10  I=1, NPEQ
  8563.       DO 7  K=1, NOP
  8564.       IA= I+( K-1)* NPEQ
  8565.     7 Y( K)= B( IA, IC)
  8566.       SUM= Y(1)
  8567.       DO 8  K=2, NOP
  8568.     8 SUM= SUM+ Y( K)
  8569.       B( I, IC)= SUM* FNORM
  8570.       DO 10  K=2, NOP
  8571.       IA= I+( K-1)* NPEQ
  8572.       SUM= Y(1)
  8573.       DO 9  J=2, NOP
  8574.     9 SUM= SUM+ Y( J)* CONJG( SSX( K, J))
  8575.    10 B( IA, IC)= SUM* FNORM
  8576.    11 IF( ICASE.LT.3) GOTO 12
  8577.       REWIND IFL1
  8578. C                                                                       
  8579. C     SOLVE EACH MODE EQUATION                                          
  8580. C                                                                       
  8581.       REWIND IFL2
  8582.    12 DO 16  KK=1, NOP
  8583.       IA=( KK-1)* NPEQ+1
  8584.       IB= IA
  8585.       IF( ICASE.NE.4) GOTO 13
  8586.       I= NPEQ* NPEQ
  8587.       READ( IFL1) ( A( J), J=1, I)
  8588.       IB=1
  8589.    13 IF( ICASE.EQ.3.OR. ICASE.EQ.5) GOTO 15
  8590.       DO 14  IC=1, NRH
  8591.    14 CALL SOLVE( NPEQ, A( IB), IP( IA), B( IA, IC), NROW)
  8592.       GOTO 16
  8593.    15 CALL LTSOLV( A, NPEQ, IP( IA), B( IA,1), NEQ, NRH, IFL1, IFL2)
  8594.    16 CONTINUE
  8595. C                                                                       
  8596. C     INVERSE TRANSFORM THE MODE SOLUTIONS                              
  8597. C                                                                       
  8598.       IF( NOP.EQ.1) RETURN
  8599.       DO 26  IC=1, NRH
  8600.       DO 20  I=1, NPEQ
  8601.       DO 17  K=1, NOP
  8602.       IA= I+( K-1)* NPEQ
  8603.    17 Y( K)= B( IA, IC)
  8604.       SUM= Y(1)
  8605.       DO 18  K=2, NOP
  8606.    18 SUM= SUM+ Y( K)
  8607.       B( I, IC)= SUM
  8608.       DO 20  K=2, NOP
  8609.       IA= I+( K-1)* NPEQ
  8610.       SUM= Y(1)
  8611.       DO 19  J=2, NOP
  8612.    19 SUM= SUM+ Y( J)* SSX( K, J)
  8613.    20 B( IA, IC)= SUM
  8614.       IF( N.EQ.0.OR. M.EQ.0) GOTO 26
  8615.       DO 21  I=1, NEQ
  8616.    21 Y( I)= B( I, IC)
  8617.       KK=2* MP
  8618.       IA= NP
  8619.       IB= N
  8620.       J= NP
  8621.       DO 25  K=1, NOP
  8622.       IF( K.EQ.1) GOTO 23
  8623.       DO 22  I=1, NP
  8624.       IA= IA+1
  8625.       J= J+1
  8626.    22 B( IA, IC)= Y( J)
  8627.       IF( K.EQ. NOP) GOTO 25
  8628.    23 DO 24  I=1, KK
  8629.       IB= IB+1
  8630.       J= J+1
  8631.    24 B( IB, IC)= Y( J)
  8632.    25 CONTINUE
  8633.    26 CONTINUE
  8634.       RETURN
  8635.       END
  8636. C ***
  8637. C     DOUBLE PRECISION 6/4/85
  8638. C
  8639.       SUBROUTINE TBF( I, ICAP)
  8640. C ***
  8641. C     COMPUTE BASIS FUNCTION I                                          
  8642.       IMPLICIT REAL (A-H,O-Z)
  8643.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  8644.       COMMON  /DATA/ LD, N1, N2, N, NP, M1, M2, M, MP, X( NM), Y( NM), 
  8645.      &Z( NM), SI( NM), BI( NM), ALP( NM), BET( NM), ICON1( N2M), ICON2(
  8646.      & N2M), ITAG( N2M), ICONX( NM), WLAM, IPSYM
  8647.       COMMON  /SEGJ/ AX(30), BX(30), CX(30), JCO(30), JSNO, ISCON(50), 
  8648.      &NSCON, IPCON(10), NPCON
  8649.       DATA   PI/3.141592654D+0/, JMAX/30/
  8650.       JSNO=0
  8651.       PP=0.
  8652.       JCOX= ICON1( I)
  8653.       IF( JCOX.GT.10000) JCOX= I
  8654.       JEND=-1
  8655.       IEND=-1
  8656.       SIG=-1.
  8657.       IF( JCOX) 1,10,2
  8658.     1 JCOX=- JCOX
  8659.       GOTO 3
  8660.     2 SIG=- SIG
  8661.       JEND=- JEND
  8662.     3 JSNO= JSNO+1
  8663.       IF( JSNO.GE. JMAX) GOTO 28
  8664.       JCO( JSNO)= JCOX
  8665.       D= PI* SI( JCOX)
  8666.       SDH= SIN( D)
  8667.       CDH= COS( D)
  8668.       SD=2.* SDH* CDH
  8669.       IF( D.GT.0.015) GOTO 4
  8670.       OMC=4.* D* D
  8671.       OMC=((1.3888889D-3* OMC-4.1666666667D-2)* OMC+.5)* OMC
  8672.       GOTO 5
  8673.     4 OMC=1.- CDH* CDH+ SDH* SDH
  8674.     5 AJ=1./( LOG(1./( PI* BI( JCOX)))-.577215664D+0)
  8675.       PP= PP- OMC/ SD* AJ
  8676.       AX( JSNO)= AJ/ SD* SIG
  8677.       BX( JSNO)= AJ/(2.* CDH)
  8678.       CX( JSNO)=- AJ/(2.* SDH)* SIG
  8679.       IF( JCOX.EQ. I) GOTO 8
  8680.       IF( JEND.EQ.1) GOTO 6
  8681.       JCOX= ICON1( JCOX)
  8682.       GOTO 7
  8683.     6 JCOX= ICON2( JCOX)
  8684.     7 IF( IABS( JCOX).EQ. I) GOTO 9
  8685.       IF( JCOX) 1,28,2
  8686.     8 BX( JSNO)=- BX( JSNO)
  8687.     9 IF( IEND.EQ.1) GOTO 11
  8688.    10 PM=- PP
  8689.       PP=0.
  8690.       NJUN1= JSNO
  8691.       JCOX= ICON2( I)
  8692.       IF( JCOX.GT.10000) JCOX= I
  8693.       JEND=1
  8694.       IEND=1
  8695.       SIG=-1.
  8696.       IF( JCOX) 1,11,2
  8697.    11 NJUN2= JSNO- NJUN1
  8698.       JSNOP= JSNO+1
  8699.       JCO( JSNOP)= I
  8700.       D= PI* SI( I)
  8701.       SDH= SIN( D)
  8702.       CDH= COS( D)
  8703.       SD=2.* SDH* CDH
  8704.       CD= CDH* CDH- SDH* SDH
  8705.       IF( D.GT.0.015) GOTO 12
  8706.       OMC=4.* D* D
  8707.       OMC=((1.3888889D-3* OMC-4.1666666667D-2)* OMC+.5)* OMC
  8708.       GOTO 13
  8709.    12 OMC=1.- CD
  8710.    13 AP=1./( LOG(1./( PI* BI( I)))-.577215664D+0)
  8711.       AJ= AP
  8712.       IF( NJUN1.EQ.0) GOTO 16
  8713.       IF( NJUN2.EQ.0) GOTO 20
  8714.       QP= SD*( PM* PP+ AJ* AP)+ CD*( PM* AP- PP* AJ)
  8715.       QM=( AP* OMC- PP* SD)/ QP
  8716.       QP=-( AJ* OMC+ PM* SD)/ QP
  8717.       BX( JSNOP)=( AJ* QM+ AP* QP)* SDH/ SD
  8718.       CX( JSNOP)=( AJ* QM- AP* QP)* CDH/ SD
  8719.       DO 14  IEND=1, NJUN1
  8720.       AX( IEND)= AX( IEND)* QM
  8721.       BX( IEND)= BX( IEND)* QM
  8722.    14 CX( IEND)= CX( IEND)* QM
  8723.       JEND= NJUN1+1
  8724.       DO 15  IEND= JEND, JSNO
  8725.       AX( IEND)=- AX( IEND)* QP
  8726.       BX( IEND)= BX( IEND)* QP
  8727.    15 CX( IEND)=- CX( IEND)* QP
  8728.       GOTO 27
  8729.    16 IF( NJUN2.EQ.0) GOTO 24
  8730.       IF( ICAP.NE.0) GOTO 17
  8731.       XXI=0.
  8732.       GOTO 18
  8733.    17 QP= PI* BI( I)
  8734.       XXI= QP* QP
  8735.       XXI= QP*(1.-.5* XXI)/(1.- XXI)
  8736.    18 QP=-( OMC+ XXI* SD)/( SD*( AP+ XXI* PP)+ CD*( XXI* AP- PP))
  8737.       D= CD- XXI* SD
  8738.       BX( JSNOP)=( SDH+ AP* QP*( CDH- XXI* SDH))/ D
  8739.       CX( JSNOP)=( CDH+ AP* QP*( SDH+ XXI* CDH))/ D
  8740.       DO 19  IEND=1, NJUN2
  8741.       AX( IEND)=- AX( IEND)* QP
  8742.       BX( IEND)= BX( IEND)* QP
  8743.    19 CX( IEND)=- CX( IEND)* QP
  8744.       GOTO 27
  8745.    20 IF( ICAP.NE.0) GOTO 21
  8746.       XXI=0.
  8747.       GOTO 22
  8748.    21 QM= PI* BI( I)
  8749.       XXI= QM* QM
  8750.       XXI= QM*(1.-.5* XXI)/(1.- XXI)
  8751.    22 QM=( OMC+ XXI* SD)/( SD*( AJ- XXI* PM)+ CD*( PM+ XXI* AJ))
  8752.       D= CD- XXI* SD
  8753.       BX( JSNOP)=( AJ* QM*( CDH- XXI* SDH)- SDH)/ D
  8754.       CX( JSNOP)=( CDH- AJ* QM*( SDH+ XXI* CDH))/ D
  8755.       DO 23  IEND=1, NJUN1
  8756.       AX( IEND)= AX( IEND)* QM
  8757.       BX( IEND)= BX( IEND)* QM
  8758.    23 CX( IEND)= CX( IEND)* QM
  8759.       GOTO 27
  8760.    24 BX( JSNOP)=0.
  8761.       IF( ICAP.NE.0) GOTO 25
  8762.       XXI=0.
  8763.       GOTO 26
  8764.    25 QP= PI* BI( I)
  8765.       XXI= QP* QP
  8766.       XXI= QP*(1.-.5* XXI)/(1.- XXI)
  8767.    26 CX( JSNOP)=1./( CDH- XXI* SDH)
  8768.    27 JSNO= JSNOP
  8769.       AX( JSNO)=-1.
  8770.       RETURN
  8771.    28 WRITE( 6,29)  I
  8772. C                                                                       
  8773.       STOP
  8774.    29 FORMAT(' TBF - SEGMENT CONNECTION ERROR FOR SEGMENT',I5)
  8775.       END
  8776. C ***
  8777. C     DOUBLE PRECISION 6/4/85
  8778. C
  8779.       SUBROUTINE TEST( F1R, F2R, TR, F1I, F2I, TI, DMIN)
  8780. C ***
  8781. C                                                                       
  8782. C     TEST FOR CONVERGENCE IN NUMERICAL INTEGRATION                     
  8783. C                                                                       
  8784.       IMPLICIT REAL (A-H,O-Z)
  8785.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  8786.       DEN= ABS( F2R)
  8787.       TR= ABS( F2I)
  8788.       IF( DEN.LT. TR) DEN= TR
  8789.       IF( DEN.LT. DMIN) DEN= DMIN
  8790.       IF( DEN.LT.1.D-37) GOTO 1
  8791.       TR= ABS(( F1R- F2R)/ DEN)
  8792.       TI= ABS(( F1I- F2I)/ DEN)
  8793.       RETURN
  8794.     1 TR=0.
  8795.       TI=0.
  8796.       RETURN
  8797.       END
  8798. C ***
  8799. C     DOUBLE PRECISION 6/4/85
  8800. C
  8801.       SUBROUTINE TRIO( J)
  8802. C ***
  8803. C     COMPUTE THE COMPONENTS OF ALL BASIS FUNCTIONS ON SEGMENT J        
  8804.       IMPLICIT REAL (A-H,O-Z)
  8805.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  8806.       COMMON  /DATA/ LD, N1, N2, N, NP, M1, M2, M, MP, X( NM), Y( NM), 
  8807.      &Z( NM), SI( NM), BI( NM), ALP( NM), BET( NM), ICON1( N2M), ICON2(
  8808.      & N2M), ITAG( N2M), ICONX( NM), WLAM, IPSYM
  8809.       COMMON  /SEGJ/ AX(30), BX(30), CX(30), JCO(30), JSNO, ISCON(50), 
  8810.      &NSCON, IPCON(10), NPCON
  8811.       DATA   JMAX/30/
  8812.       JSNO=0
  8813.       JCOX= ICON1( J)
  8814.       IF( JCOX.GT.10000) GOTO 7
  8815.       JEND=-1
  8816.       IEND=-1
  8817.       IF( JCOX) 1,7,2
  8818.     1 JCOX=- JCOX
  8819.       GOTO 3
  8820.     2 JEND=- JEND
  8821.     3 IF( JCOX.EQ. J) GOTO 6
  8822.       JSNO= JSNO+1
  8823.       IF( JSNO.GE. JMAX) GOTO 9
  8824.       CALL SBF( JCOX, J, AX( JSNO), BX( JSNO), CX( JSNO))
  8825.       JCO( JSNO)= JCOX
  8826.       IF( JEND.EQ.1) GOTO 4
  8827.       JCOX= ICON1( JCOX)
  8828.       GOTO 5
  8829.     4 JCOX= ICON2( JCOX)
  8830.     5 IF( JCOX) 1,9,2
  8831.     6 IF( IEND.EQ.1) GOTO 8
  8832.     7 JCOX= ICON2( J)
  8833.       IF( JCOX.GT.10000) GOTO 8
  8834.       JEND=1
  8835.       IEND=1
  8836.       IF( JCOX) 1,8,2
  8837.     8 JSNO= JSNO+1
  8838.       CALL SBF( J, J, AX( JSNO), BX( JSNO), CX( JSNO))
  8839.       JCO( JSNO)= J
  8840.       RETURN
  8841.     9 WRITE( 6,10)  J
  8842. C                                                                       
  8843.       STOP
  8844.    10 FORMAT(' TRIO - SEGMENT CONNENTION ERROR FOR SEGMENT',I5)
  8845.       END
  8846. C ***
  8847. C     DOUBLE PRECISION 6/4/85
  8848. C
  8849.       SUBROUTINE UNERE( XOB, YOB, ZOB)
  8850. C ***
  8851. C     CALCULATES THE ELECTRIC FIELD DUE TO UNIT CURRENT IN THE T1 AND T2
  8852. C     DIRECTIONS ON A PATCH                                             
  8853.       IMPLICIT REAL (A-H,O-Z)
  8854.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  8855.       COMPLEX  EXK, EYK, EZK, EXS, EYS, EZS, EXC, EYC, EZC, ZRATI, 
  8856.      &ZRATI2, T1, ER, Q1, Q2, RRV, RRH, EDP, FRATI
  8857.       COMMON  /DATAJ/ S, B, XJ, YJ, ZJ, CABJ, SABJ, SALPJ, EXK, EYK, 
  8858.      &EZK, EXS, EYS, EZS, EXC, EYC, EZC, RKH, IEXK, IND1, INDD1, IND2, 
  8859.      &INDD2, IPGND
  8860.       COMMON  /GND/ ZRATI, ZRATI2, FRATI, CL, CH, SCRWL, SCRWR, NRADL, 
  8861.      &KSYMP, IFAR, IPERF, T1, T2
  8862.       EQUIVALENCE(T1XJ,CABJ),(T1YJ,SABJ),(T1ZJ,SALPJ),(T2XJ,B),(T2YJ,
  8863.      &IND1),(T2ZJ,IND2)
  8864. C     CONST=ETA/(8.*PI**2)                                              
  8865.       DATA   TPI, CONST/6.283185308D+0,4.771341188D+0/
  8866.       ZR= ZJ
  8867.       T1ZR= T1ZJ
  8868.       T2ZR= T2ZJ
  8869.       IF( IPGND.NE.2) GOTO 1
  8870.       ZR=- ZR
  8871.       T1ZR=- T1ZR
  8872.       T2ZR=- T2ZR
  8873.     1 RX= XOB- XJ
  8874.       RY= YOB- YJ
  8875.       RZ= ZOB- ZR
  8876.       R2= RX* RX+ RY* RY+ RZ* RZ
  8877.       IF( R2.GT.1.D-20) GOTO 2
  8878.       EXK=(0.,0.)
  8879.       EYK=(0.,0.)
  8880.       EZK=(0.,0.)
  8881.       EXS=(0.,0.)
  8882.       EYS=(0.,0.)
  8883.       EZS=(0.,0.)
  8884.       RETURN
  8885.     2 R= SQRT( R2)
  8886.       TT1=- TPI* R
  8887.       TT2= TT1* TT1
  8888.       RT= R2* R
  8889.       ER= CMPLX( SIN( TT1),- COS( TT1))*( CONST* S)
  8890.       Q1= CMPLX( TT2-1., TT1)* ER/ RT
  8891.       Q2= CMPLX(3.- TT2,-3.* TT1)* ER/( RT* R2)
  8892.       ER= Q2*( T1XJ* RX+ T1YJ* RY+ T1ZR* RZ)
  8893.       EXK= Q1* T1XJ+ ER* RX
  8894.       EYK= Q1* T1YJ+ ER* RY
  8895.       EZK= Q1* T1ZR+ ER* RZ
  8896.       ER= Q2*( T2XJ* RX+ T2YJ* RY+ T2ZR* RZ)
  8897.       EXS= Q1* T2XJ+ ER* RX
  8898.       EYS= Q1* T2YJ+ ER* RY
  8899.       EZS= Q1* T2ZR+ ER* RZ
  8900.       IF( IPGND.EQ.1) GOTO 6
  8901.       IF( IPERF.NE.1) GOTO 3
  8902.       EXK=- EXK
  8903.       EYK=- EYK
  8904.       EZK=- EZK
  8905.       EXS=- EXS
  8906.       EYS=- EYS
  8907.       EZS=- EZS
  8908.       GOTO 6
  8909.     3 XYMAG= SQRT( RX* RX+ RY* RY)
  8910.       IF( XYMAG.GT.1.D-6) GOTO 4
  8911.       PX=0.
  8912.       PY=0.
  8913.       CTH=1.
  8914.       RRV=(1.,0.)
  8915.       GOTO 5
  8916.     4 PX=- RY/ XYMAG
  8917.       PY= RX/ XYMAG
  8918.       CTH= RZ/ SQRT( XYMAG* XYMAG+ RZ* RZ)
  8919.       RRV= SQRT(1.- ZRATI* ZRATI*(1.- CTH* CTH))
  8920.     5 RRH= ZRATI* CTH
  8921.       RRH=( RRH- RRV)/( RRH+ RRV)
  8922.       RRV= ZRATI* RRV
  8923.       RRV=-( CTH- RRV)/( CTH+ RRV)
  8924.       EDP=( EXK* PX+ EYK* PY)*( RRH- RRV)
  8925.       EXK= EXK* RRV+ EDP* PX
  8926.       EYK= EYK* RRV+ EDP* PY
  8927.       EZK= EZK* RRV
  8928.       EDP=( EXS* PX+ EYS* PY)*( RRH- RRV)
  8929.       EXS= EXS* RRV+ EDP* PX
  8930.       EYS= EYS* RRV+ EDP* PY
  8931.       EZS= EZS* RRV
  8932.     6 RETURN
  8933.       END
  8934. C ***
  8935. C     DOUBLE PRECISION 6/4/85
  8936. C
  8937.       SUBROUTINE WIRE( XW1, YW1, ZW1, XW2, YW2, ZW2, RAD, RDEL, RRAD, 
  8938.      &NS, ITG)
  8939. C ***
  8940. C                                                                       
  8941. C     SUBROUTINE WIRE GENERATES SEGMENT GEOMETRY DATA FOR A STRAIGHT    
  8942. C     WIRE OF NS SEGMENTS.                                              
  8943. C                                                                       
  8944.       IMPLICIT REAL (A-H,O-Z)
  8945.       PARAMETER ( NM=600, N2M=800, N3M=1000)
  8946.       COMMON  /DATA/ LD, N1, N2, N, NP, M1, M2, M, MP, X( NM), Y( NM), 
  8947.      &Z( NM), SI( NM), BI( NM), ALP( NM), BET( NM), ICON1( N2M), ICON2(
  8948.      & N2M), ITAG( N2M), ICONX( NM), WLAM, IPSYM
  8949.       DIMENSION  X2(1), Y2(1), Z2(1)
  8950.       EQUIVALENCE(X2(1),SI(1)),(Y2(1),ALP(1)),(Z2(1),BET(1))
  8951.       IST= N+1
  8952.       N= N+ NS
  8953.       NP= N
  8954.       MP= M
  8955.       IPSYM=0
  8956.       IF( NS.LT.1) RETURN
  8957.       XD= XW2- XW1
  8958.       YD= YW2- YW1
  8959.       ZD= ZW2- ZW1
  8960.       IF( ABS( RDEL-1.).LT.1.D-6) GOTO 1
  8961.       DELZ= SQRT( XD* XD+ YD* YD+ ZD* ZD)
  8962.       XD= XD/ DELZ
  8963.       YD= YD/ DELZ
  8964.       ZD= ZD/ DELZ
  8965.       DELZ= DELZ*(1.- RDEL)/(1.- RDEL** NS)
  8966.       RD= RDEL
  8967.       GOTO 2
  8968.     1 FNS= NS
  8969.       XD= XD/ FNS
  8970.       YD= YD/ FNS
  8971.       ZD= ZD/ FNS
  8972.       DELZ=1.
  8973.       RD=1.
  8974.     2 RADZ= RAD
  8975.       XS1= XW1
  8976.       YS1= YW1
  8977.       ZS1= ZW1
  8978.       DO 3  I= IST, N
  8979.       ITAG( I)= ITG
  8980.       XS2= XS1+ XD* DELZ
  8981.       YS2= YS1+ YD* DELZ
  8982.       ZS2= ZS1+ ZD* DELZ
  8983.       X( I)= XS1
  8984.       Y( I)= YS1
  8985.       Z( I)= ZS1
  8986.       X2( I)= XS2
  8987.       Y2( I)= YS2
  8988.       Z2( I)= ZS2
  8989.       BI( I)= RADZ
  8990.       DELZ= DELZ* RD
  8991.       RADZ= RADZ* RRAD
  8992.       XS1= XS2
  8993.       YS1= YS2
  8994.     3 ZS1= ZS2
  8995.       X2( N)= XW2
  8996.       Y2( N)= YW2
  8997.       Z2( N)= ZW2
  8998.       RETURN
  8999.       END
  9000. C ***
  9001. C     DOUBLE PRECISION 6/4/85
  9002. C
  9003.       FUNCTION ZINT( SIGL, ROLAM)
  9004. C ***
  9005. C                                                                       
  9006. C     ZINT COMPUTES THE INTERNAL IMPEDANCE OF A CIRCULAR WIRE           
  9007. C                                                                       
  9008. C                                                                       
  9009.       IMPLICIT REAL (A-H,O-Z)
  9010.       COMPLEX  TH, PH, F, G, FJ, CN, BR1, BR2, ZINT
  9011.       COMPLEX  CC1, CC2, CC3, CC4, CC5, CC6, CC7, CC8, CC9, CC10, 
  9012.      &CC11, CC12, CC13, CC14
  9013.       DIMENSION  FJX(2), CNX(2), CCN(28)
  9014.       EQUIVALENCE(FJ,FJX),(CN,CNX),(CC1,CCN(1)),(CC2,CCN(3)),(CC3,CCN(5
  9015.      &)),(CC4,CCN(7)),(CC5,CCN(9)),(CC6,CCN(11)),(CC7,CCN(13)),(CC8,CCN
  9016.      &(15)),(CC9,CCN(17)),(CC10,CCN(19)),(CC11,CCN(21)),(CC12,CCN(23)),
  9017.      &(CC13,CCN(25)),(CC14,CCN(27))
  9018.       DATA   PI, POT, TP, TPCMU/3.1415926D+0,1.5707963D+0,6.2831853D+0,
  9019.      &2.368705D+3/
  9020.       DATA   CMOTP/60.00/, FJX/0.,1./, CNX/.70710678D+0,.70710678D+0/
  9021.       DATA   CCN/6.D-7,1.9D-6,-3.4D-6,5.1D-6,-2.52D-5,0.,-9.06D-5,-
  9022.      &9.01D-5,0.,-9.765D-4,.0110486D+0,-.0110485D+0,0.,-.3926991D+0,
  9023.      &1.6D-6,-3.2D-6,1.17D-5,-2.4D-6,3.46D-5,3.38D-5,5.D-7,2.452D-4,-
  9024.      &1.3813D-3,1.3811D-3,-6.25001D-2,-1.D-7,.7071068D+0,.7071068D+0/
  9025.       TH( D)=((((( CC1* D+ CC2)* D+ CC3)* D+ CC4)* D+ CC5)* D+ CC6)* D+
  9026.      & CC7
  9027.       PH( D)=((((( CC8* D+ CC9)* D+ CC10)* D+ CC11)* D+ CC12)* D+ CC13)
  9028.      &* D+ CC14
  9029.       F( D)= SQRT( POT/ D)* EXP(- CN* D+ TH(-8./ X))
  9030.       G( D)= EXP( CN* D+ TH(8./ X))/ SQRT( TP* D)
  9031.       X= SQRT( TPCMU* SIGL)* ROLAM
  9032.       IF( X.GT.110.) GOTO 2
  9033.       IF( X.GT.8.) GOTO 1
  9034.       Y= X/8.
  9035.       Y= Y* Y
  9036.       S= Y* Y
  9037.       BER=((((((-9.01D-6* S+1.22552D-3)* S-.08349609D+0)* S+
  9038.      &2.6419140D+0)* S-32.363456D+0)* S+113.77778D+0)* S-64.)* S+1.
  9039.       BEI=((((((1.1346D-4* S-.01103667D+0)* S+.52185615D+0)* S-
  9040.      &10.567658D+0)* S+72.817777D+0)* S-113.77778D+0)* S+16.)* Y
  9041.       BR1= CMPLX( BER, BEI)
  9042.       BER=(((((((-3.94D-6* S+4.5957D-4)* S-.02609253D+0)* S+
  9043.      &.66047849D+0)* S-6.0681481D+0)* S+14.222222D+0)* S-4.)* Y)* X
  9044.       BEI=((((((4.609D-5* S-3.79386D-3)* S+.14677204D+0)* S-
  9045.      &2.3116751D+0)* S+11.377778D+0)* S-10.666667D+0)* S+.5)* X
  9046.       BR2= CMPLX( BER, BEI)
  9047.       BR1= BR1/ BR2
  9048.       GOTO 3
  9049.     1 BR2= FJ* F( X)/ PI
  9050.       BR1= G( X)+ BR2
  9051.       BR2= G( X)* PH(8./ X)- BR2* PH(-8./ X)
  9052.       BR1= BR1/ BR2
  9053.       GOTO 3
  9054.     2 BR1= CMPLX(.70710678D+0,-.70710678D+0)
  9055.     3 ZINT= FJ* SQRT( CMOTP/ SIGL)* BR1/ ROLAM
  9056.       RETURN
  9057.       END
  9058.  
  9059.       SUBROUTINE STR0PC( STRING, STRING1)
  9060.       CHARACTER *(*)  STRING, STRING1
  9061.       INTEGER*4  I, J, IC
  9062.       DO 150, I=1, LEN( STRING)
  9063.       IC= ICHAR( STRING( I: I))
  9064.       IF( IC.GE.97.AND. IC.LE.122) IC= IC-32
  9065.       STRING1( I: I)= CHAR( IC)
  9066.   150 CONTINUE
  9067.       RETURN
  9068.       END
  9069.  
  9070.